前言
Java是一种强类型语言, 每个变量都必须声明其数据类型。Java 的数据类型可分为两大类:基本数据类型( primitive data type )和引用数据类型( reference data type )。.
Java中定义了3类8种基本数据类型
数值型- byte、 short、 int、 long、 float、 double
字符型- char
布尔型 - boolean
整型
整型用于表示没有小数部分的数值,它允许是负数。整型的范围与运行Java代码的机器无关,这正是Java程序具有很强移植能力的原因之一。与此相反, C和C+ +程序需要针对不同的处理器选择最有效的整型。
一个字节有八位,因此byte范围有2的8次方。因负数,因此范围为(-128~127)。short,int,long同理。
Java语言整型常量的四种表示形式
十进制整数,如:99,-500,0
八进制整数,要求以0开头,如:015
十六进制数,要求0x或0X开头,如:0x15
二进制数,要求0b或OB开头,如: 0b01110011
Java语言的整型常数默认为int型,声明long型常量可以后加' |'或'L '
long 类型常数的写法及变量的声明
long a = 5555555; //编译成功 ,在int表示的范围内(21亿内)。
long b = 5555555555;//不加L编译错误,已经超过int表示的范围。
报错: The literal 55555555555 of type int is out of range .所以我们需要修改代码
为:
long b = 55555555555L;
浮点型
带小数的数据在Java中称为浮点型。浮点型可分为float类型和double类型。
float类型又被称作单精度类型,尾数可以精确到7位有效数字在很多情况下,float
类型的精度很难满足需求。而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。
Java浮点类型常量有两种表示形式:
十进制数形式,例如:3.14 314.0 0.314
科学记数法形式 ,如3.14e0 3.14E2 3.14E-1]
使用科学记数法给浮点型变量赋值:
double f = 314e2; //314*10^2-->31400.0
double f2 = 314e-2; //314*10^(-2)-->3.14
float类型的数值有一个后缀F或者f , 没有后缀F/f的浮点数值默认为double类型。也
可以在浮点数值后添加后缀D或者d,以明确其为double类型。
float 类型常量的写法及变量的声明:
float f = 3.14F;//float 类型赋值时需要添加后缀F/f
double d1= 3.14;
double d2 = 3.14D;
浮点类型float,double的数据不适合在不容许舍入误差的金融计算领域。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
浮点型数据的比较一
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);//结果为false
浮点型数据的比较二
float d1 = 423432423f;
floatd2 = d1+1;
System.out.println(f1==d1);//结果为ture
字符型
字符型在内存中占2个字节,在Java中使用单引号来表示字符常量。例如’A'是一个字符,它与”A"是不同的,”A"表示含有一个字符的字符串。
char类型用来表示在Unicode编码表中的字符。Unicode 编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符。
字符型演示
char eChar = 'a';
char cChar = '中';
Unicode具有从0到65535之间的编码,他们通常用从’ \u0000’ 到’ \uFFFF’ 之间的十六进制值来表示(前缀为u表示Unicode )
字符型的十六进制值表示方法:
char c = '\u0061';
Java语言中还允许使用转义字符’ 来将其后的字符转变为其它的含义。 常用的转
义字符及其含义和Unicode值。
转义字符:
char c2= '\n'; //代表换行符
转义字符:
注意事项
以后我们学的String类,其实是字符序列(char sequence),本质是char字符组成的数组。
boolean型
boolean类型有两个常量值, true 和false,在内存中占一一个字节或4个字节,不可以使用0或非0的整数替代true和false , 这点和C语言不同。boolean 类型用来判断逻辑条件,一般用于程序流程控制 。
boolean 类型演示:
boolean flag ;
flag = true; //或者 flag = false;
if(flag) {
// true分支
} else {
// false 分支
}
Less is More! ! 请不要这样写: if(flag= = true),只有新手才那么写。关键也很容易写错成 if(flag=true),这样就变成赋值flag为true而不是判断!老鸟的写法是if ( flag )或者if ( !flag)
关于boolean类型几个字节的说明:
在《Java虚拟机规范》一书中的描述:“ 虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元索占8位"。也就是说JVM规范指出boolean当做int处理,也就是4字节,boolean数组当做byte数组处理,这样我们可以得出boolean类型占了单独使用是4个字节,在数组中是确定的1个字节。