拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Java学习之路03---标识符、关键字、基本类型概念

Java学习之路03---标识符、关键字、基本类型概念

白鹭 - 2021-11-16 2167 0 2


前言

Java程式是一系列对象的集合,而对象之间透过彼此之间调用方法来达到开发目的,因此在认识Java程式前需要特别注意几个专有名词:

  1. 类(class): 一个抽象的模板,例如人,他有身高、体重等属性,有说话、跳舞等动作

  2. 对象(object): 一个类的实例,例如美国人、欧洲人等

  3. 方法(method): 包在类当中的函数,可以代表该类的行为,例如人会说话。一个类可以拥有多个方法

  4. 实例基本类型(Instance variables): 每个类都有专属的基本类型,并且可以拥有多种不同基本类型

接着来看看一个简单的java程式,其中标识符是对所有需要名字的组成部分的通称,关键字是java为了特殊目的保留的字段,不开放给开发者使用,基本类型是一个用来储存变动数值的内存记忆体名称


如果有学过其他程式语言的朋友应该可以看到几分相似之处:


标识符

Java标识符是package,class,interface,method或基本类型名的总称。而好的命名必须要能明确反映出作用。不过在在正确命名前我们需要了解那些命名是合法的哪些又是非法的

合法命名

例如以下的例子,可以使用英文大小写(大小写有别)、数字、下滑线、美元符等特殊字元

  • Hello

  • hello

  • hello123

  • _hello_

  • haha$$$haha

  • Public(首字母大写)

  • Void

非法命名

但是但是,知道可以用英文字母、数字、特殊字元来表示并不代表没有限制,例如不能以数字开头、避免使用关键字予保留字、名称之间不能有空白等

  • class

  • void

  • 1hello

  • abc 123

关键字

关键字是对编译器有特殊用意的词,这些关键字代表的意思会在后面介绍,我们先熟悉几个常见的就可以

例如

  • package

  • public

  • class

  • static

  • void

保留字是虽然现在没有作为关键字,但是在以后版本说不定会进行更新,例如等

  • goto(危险的家伙)

  • const

不管是关键字还是保留字,在做标识符命名时应该避免使用

下面的表格是常见的关键字表,不用特别去背,用到的时候自然会记得,或者看编辑器是否有highlight就知道了

abstractbooleanbreakbytecasecatch
charclasscontinuedefaultdodouble
elseextendsfalsefinalfinallyfloat
forifimplementsimportnativeint
interfacelonginstanceofnewnullpackage
privateprotectedpublicreturnshortstatic
superswitchsynchronizedthisthrowthrows
transienttruetryvoidvolatilewhile

基本类型

基本类型是用来储存不断改基本类型值的一小块记忆体区块的总称,我们在编写java程式时需要注意三个重点,分别是

int i=10;
  • 基本类型类型(int)

  • 基本类型名(i)

  • 基本类型值(10)

因为基本类型也是标识符的一种,因此他的命名也具有相同的规范性,同时基本类型的命名有专属于它的一套特别规则

驼峰命名法

假如基本类型只有单一一个词,那么基本类型名必须要全部小写

例如: age


若该基本类型名是由两个单词组成那么第一个单词小写,第二个单词首字母大写

例如: lastDay


好的单词需要简短有力,让其他开发者一看就知道它代表的意思,并且可以清楚区分他是类、方法或是基本类型

class命名规则

Pascal命名法
Pascal命名法是针对类的命名法,他要求首字母必须大写

例如:

package com.imooc;

public class Hello{

	public static void main(String[] args) {
		int a = 10;
		System.out.println(a);
	}
}

基本基本类型类型

java主要的基本类型类型大概可以用下图来表示,本篇将会大致介绍基本基本类型类型的基础,详细基本类型的操作会在后篇提及

基本基本类型类型的学习重点在于基本类型存储范围以及基本类型存储代表的含意,学习使用不同基本类型类型目的在于依照场合使用最适合基本类型

基本类型在使用前一定要进行初始化

下表示java不同基本类型类型的范围以及含意:

基本类型类型意思占用位元组
byte字节型1
short短整数型2
int整数型4
long长整数型8
float单经度浮点数4
double双精度符点数8
char字元型2
boolean布林型1

可以将储存范围小的基本类型赋值给储存范围大的基本类型,反过来则不行,学过相关程式语言的朋友应该也理解这个概念

float f=123.23f;
double d;
d=f;

整数

整数的范围
整数类型依照储存大小从小到大分别为,储存范围如下表:

类型最小值最大值
byte-128127
short-3276832767
int-2,147,483,6482,147,483,647
long-9,223,372,036,854,775,8089,223,372,036,854,775,807

8进制: 0开头整数的表达方式
在java程式中可以用简单的8, 10, 16进位来表达整数值

    • 012

    • 079

    • 067

  • 10进制

    • 123

    • 78

  • 16进制: 0x开头

    • 0x3c

    • 0xabc

    • 0xabcL/0xabcl(long类型限定后缀)

byte
  • 基本类型长度为1个byte

  • 主要用来代替整,节约空间用

  • 有符号

byte b1 = 127;byte b2 = -128;
short
  • 基本类型长度为2个bytes

  • short类型也可以用来代替整数,节约空间

  • 有符号

short s1 = 123;short s2 = -321;
int
  • 基本类型长度为4个bytes

  • 一般整型常数预设为int类型

  • 最常见的整数类型

  • 有符号

int i = 2147483647;int i = 0;
long
  • 基本类型长度为8个bytes

  • 通常用来储存非常长的整数(大型系统)

  • 需要在基本类型后面加上后缀

  • 有符号

long i = 2147483648; // 没有后缀的情况下,预设是int类型,编译会出错
long l = 123456L; // 后缀L或l可以代表long类型,不过通常会写大写以免l与1混淆

byte与short不用加上后缀

在java中常数预设是int类型,也就是说整数范围在-2,147,483,648~2,147,483,647。

如果使用long赋值时整数值超出,就要告诉编译器这个常数是long型。相反的byte与short的范围均在int之内,所以不需要增加后缀来增加常数表达长度,不过要注意赋值时不要超过宣告的基本类型范围,不然就要使用转型


浮点数

具有小数点的基本类型类型,常用于高精度计算,如果没有特定后缀,预设会将浮点数类型宣告成double,这点要特别注意

float f1 = 123.456; // 错误,应该改成
float f2 = 123.456f;
double d1 = 123.456d // 大小写没有限制
double d2 = 123.456D;

储存范围如下表:

类型最小数最小精度最大正整数
float-3.40E+381.4E-453.40E+38
double-1.79E+3084.9e-3241.79E+308

科学记号表示法
我们可以使用科学记号来表示浮点数

double d1 = 1.3e10;double d2 = 1.3E10;

特殊表达方法

char c=.5; // c=0.5
float
  • 单精度的32位元浮点数

  • 要注意浮点数不能用来表示精准的值

  • 可以用float类型来节省double类型记忆体空间

float f1 = 0.239f;
float f2;
f2 = 0.239F;
double
  • 双精度64位元浮点数

  • 同样不能用来表达精确值

  • double类型是表达范围最广的基本类型类型

double d1 = 9453.9453d;
double d2;
d2 = 5942.5942D;

浮点数最精确值与最小值混淆点

有些书上会把最小值与最精确值搞混,将float最小值写成1.4E-45,不过既然是有符号类型,那最小值一定是负数,这不就矛盾了吗


于是打开Float.class看看里面的定义,果然找到一个常数MIN_VALUE,看了一下注解对它的解释该常数表示的最小正浮点数,也可以解释成float可以多精准。右侧的注解又提到大小为1.4e-45f跟书中最小值定义一样,还好有看注解,不然真的会被搞懵


由此可知真正的最小值应该是最大值取负,最大值在Float.class也可以找到MAX_VALUE这个值,大小是3.40E+38。 double的话就去参考Double.class就可以了

浮点的二进位表示方法可以参考之前写的文章

最后把这些常数定义打印出来,double check跟所学的没问题

字元类型

char类型是16bits无符号基本类型类型,它表示Unicode字元,其范围为0~65535

类型最小值最大值
char065535

在使用char类型数据赋值时应注意需使用' '单引号,但不能使用" "双引号

char c="h"; // c: Am I a joke to you?
char c='h' // 正确

整數表示

char c1='A'; // 可以用以下方法表示
char c2=0101; // 8进位
char c3=65; // 10进位
char c4=0x41; // 16进位

Unicode編碼方法
根据Unicode Table的对应数做字面量的赋值

char a='\u0041' // 'A'

超出範圍需要casting

char a = 65535; // 正常范围
char b = (char)65536 // 超出范围,需要进行casting

跳脫字元
字元中有代表特殊含意的跳脱字元,当跳脱字元放在字元阵列时,它会对后续的字元做特殊操作。常见的跳脱字元如下表

跳脱字元含意
\'单引号字元
\\反斜线字元
\ttab空行
\rEnter
\n换行字元
\bBackspace
\0null

字串类型的基本类型,可以用来直接接收字串,注意字串类型要用两个双引号包起来字串类型

String s1 = "I Like Java!";

另外字串类型基本类型也可以用Unicode编码方式给值,例如我们可以将

String s1 = "ABC";

替换成

String s1="\u0041\u0042\u0043";

另外宣告字串类型后,要对它进行初始化操作,就算是是空字串,也要执行初始化

String s1=""; // 宣告时即初始化
String s2;
s2 = ""; // 宣告后再进行赋值

布尔类型

java相对于C/C++不同,布尔类型基本类型值只能是true或false,不能是0或1。布林基本类型类型常用来做条件判断用

boolean b=true;if(b) {
	System.out.print("boolean="+b);
}


标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *