《Java核心技术 卷I》学习笔记2:数据类型、变量与常量

1 数据类型

Java是一种强类型语言,必须为每个变量声明一种类型。在Java中,一共有8种基本类型,其中有4种整型、2种浮点类型、1种字符类型和1种boolean类型。

1.1 整型

类型存储长度取值范围
int4字节-2 147 483 648~2 147 483 647
short2字节-32768~32767
long8字节-9 223 372 036 854 775 808 ~9 223 372 036 854 775 807
byte1字节-128~127

长整型数值有一个后缀Ll(如4000000000L),十六进制数值有一个前缀0x0X(如0xCAFE),八进制有一个前缀0。八进制表示法比较容易混淆,所以最好不要使用八进制常数。

从Java 7开始,可以用前缀0b0B表示二进制数。此外,从Java 7开始,还可以为数字字面量加下划线(如1_000_000),使数字更易读,Java编译器会去除这些下划线,不会对程序产生影响。

1.2 浮点类型

类型存储长度取值范围
float4字节大约±3.402 823 47E+38F(有效位数为6~7位)
double8字节大约±1.797 693 134 862 315 70E+308(有效位数为15位)

float类型的数值有一个后缀Ff(如3.14F),没有后缀F的浮点数值默认为double类型。也可以在double类型数值后面添加后缀Dd

可以使用十六进制表示浮点数值,尾数采用十六进制,指数采用十进制,指数的基数是2,尾数和指数之间用p分隔。例如,0.125=2-3,在十六进制表示法中表示为0x1.0p-3,其中0x是十六进制前缀,1.0是尾数,-3是指数。

1.3 char类型

char类型的字面值要用单引号括起来,如'A'是一个字符常量,而"A"是一个字符串。

char类型的值可以表示为十六进制值,其范围从\u0000\uFFFF\u是一个转义序列,后面跟四位十六进制数,表示一个字符。除此之外,还有一些用于表示特殊字符的转义序列,如下表所示。

转义序列名称Unicode值
\b退格\u0008
\t制表\u0009
\n换行\u000a
\r回车\u000d
\"双引号\u0022
\'单引号\u0027
\\反斜杠\u005c

所有这些转义序列都可以出现在加引号的字符字面量或字符串中,例如'\u2122'"Hello\n"

转义序列\u还可以出现在加引号的字符常量或字符串之外,而其他所有转义序列不可以。例如:

public static void main(String\u005B\u005D args)

这种写法符合语法规则,\u005B\u005D分别是'['']'的编码。

一定要当心注释中的\u。例如:

// \u000A is a newline
错误,因为 \u000A 是换行符,之后的所有内容在下一行,不属于注释内容

// look inside c:\users
错误,因为 \u 后面没有跟着四位十六进制数。正确的写法为 c:\\users,\\是转义序列,表示反斜杠

1.4 Unicode编码与char类型

码点(code point)是指与一个编码表中的某个字符对应的代码值。在Unicode标准中,码点采用16进制书写,并加上前缀“U+”,例如“U+0041”是“A”的码点。Unicode的码点可分为17个代码平面(code plane)。第一个代码平面称为基本多语言平面,包括码点从U+0000到U+FFFF的“经典”Unicode代码;其余16个平面的码点从U+10000到U+10FFFF,包括辅助字符

UTF-16编码采用不同长度的编码表示所有Unicode码点。在基本多语言平面中,每个字符用16位表示,通常称为代码单元(code unit);而辅助字符编码为一对连续的代码单元,即32位。辅助字符的两个代码单元取值落入基本多语言平面中未用的2048个值范围内,通常称为替代区域。这样,对于任意给定的一个代码单元,可以迅速确定它是一个字符的编码,还是一个辅助字符的第一部分或第二部分。

在Java中,char类型描述了UTF-16编码中的一个代码单元。对于基本多语言平面中的字符,只需要1个char值;而辅助字符则需要2个char值。对于一个单独的char值,当它代表辅助字符中的一个代码单元时,对它的解释将没有意义。因此,最好不要在程序中使用char类型,除非需要处理UTF-16代码单元。

1.5 boolean类型

boolean类型有两个值:falsetrue,用来判定逻辑条件。整型值和布尔值之间不能进行相互转换

2 变量与常量

2.1 变量

声明变量时,先指定变量的类型,然后是变量名。例如:

double salary;
int vacationDays;
long earthPopulation;
boolean done;

变量名必须是一个以字母开头并由字母或数字构成的序列。变量名中所有的字符都有意义,并且大小写敏感。

声明一个变量之后,必须用赋值语句对变量进行显示初始化,千万不要使用未初始化的变量的值

变量的声明尽可能地靠近变量第一次使用的地方,这是一种良好的代码风格。

从Java 10开始,对于局部变量,如果可以从变量的初始值推断出它的类型,就不再需要声明类型,只需要使用关键字var而无需指定类型。例如:

var vacationDays = 12;
var greeting = "Hello";

2.2 常量

在Java中,使用关键字final指示常量。例如:

final double CM_PER_INCH = 2.54;

常量只能被赋值一次,一旦被赋值后,就不能再更改了。习惯上,常量名使用全大写。

可以在类中使用关键字static final设置类常量,这样就可以在类的多个方法中使用这个常量。例如:

public class Constant
{
	public static final double CM_PER_INCH = 2.54;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值