整型
类型 | 大小 | 取值范围 |
---|---|---|
int | 4字节 | [-2^31, 2^31-1] |
short | 2字节 | [-32 768 ,32 767] |
long | 8字节 | [-9 223 372 036 854 775, 9 223 372 036 854 775 807] |
byte | 1字节 | [-128,127] |
与c++/c程序不同的是,java的整型大小与运行java的机器无关,此外,java也没有任何无符号形式的int、long、short、或byte类型
浮点类型
类型 | 大小 | 取值范围 |
---|---|---|
float | 4字节 | 大约 ±3.402 823 47E+38F(有效位数6~7位) |
double | 8字节 | 大约 ±1.797 693 134 862 315 70E+308(有效位数为15位) |
double的有效位数大约是float的两倍(故称之为双精度数值)。
float类型的数值有一个F或f后缀,没有该后缀的数总是默认为double类型,double类型的数值会有后缀D或d。 通常情况下,float类型的精度不足以满足需求,double更加常用。
所有浮点数值的计算都遵循IEEE754规范,java提供了3个特殊数值表示浮点运算中溢出和出错情况
- 正无穷大 Double.POSITIVE_INFINITY
- 负无穷大 Double.NEGATIVE_INFINITY
- Double.NaN 不是一个数字
注意, 判断一个非数值不能使用if(x == Double.NaN) //始终为false
应当使用if(Double.isNaN(x))
Unicode和char类型
首先引入码点概念:码点(code point)是指某个字符在编码表中对应的代码值。在Unicode标准中,码点采用16进制表示,并在其代码值前加上前缀U+,如U+0041是A的码点。
Unicode的所有码点被分为17个部分,每个部分的正规叫法是代码平面。通俗来讲,就是把码点的取值范围划分为17个部分。其中U+0000到U+FFFF称为第一个代码平面,叫做基本多语言平面,而其余的16个代码平面的码点的取值范围为U+10000到U+10FFFF。
在基本多语言平面中,每个字符用16位表示(4位16进制),通常称作代码单元。对于辅助字符(无法用输入法打出来的字符),用两个代码单元表示。
在java中,char类型描述了UTF-16编码中的一个代码单元,即char类型占2个字节
强烈建议在程序中尽量使用String代替char,除法确实需要使用char类型来处理UTF-16代码单元
布尔类型
boolean类型只有两个值:true和false,与c和c++不同的是,在java中,整型值和布尔值之间不能强制转换,即while(1)这种用法在java中将会报错
常量与变量
变量
在声明一个变量后必须对其进行显式的初始化后,才能使用
int v;
System.out.println(v);
java编译器会认为上述代码是错误的。
变量的声明尽量靠近变量第一次使用的地方,这是一个良好的编程习惯。
从java10开始,对于局部变量,如果可以从变量的初始值推断出它的类型,便可不需要声明类型,只需要使用关键字var
var v=12 //v是一个整型
var c="hello world" //c是一个字符串
常量
在java中, 利用关键字final指示常量
用final修饰的变量只能被赋值一次,此后不会被修改,常量名一般大写