八种基本数据类型:byte(1字节) char(2字节) short(2字节) int(4字节) long(8字节) float(4字节) double(8字节) boolean(1字节)(1字节(byte)=8位(bits))
与之对应的基本数据类型包装类:Byte Character Short Integer Long Float Double Boolean
基本数据类型与其包装类型的区别:如:int与Integer,int变量的默认值为0,Integer变量的默认值为null,所以Integer可以区分出未赋值和值为0的区别;Integer类内部提供了一些关于整数操作的方法,如:Integer.toBinaryString(int i);把i转化为二进制。
观察如下程序语句:
short s1=1;
s1=s1+1;//1
short s2=1;
s2+=1;//2
对于注释1来说,在s1+1运算时会自动提升表达式的类型为int,所以说把int赋予给short的变量s1时会出现类型转换错误,除非主动加上强转,如:s1=(short)s1+1。对于注释2来说+=是Java语法规定的运算符,所以java编译器会对它进行转换处理,故可以正确编译执行。
System.out.println(0.09 + 0.01);
System.out.println(3*0.1==0.3);
该段代码执行结果为:0.09999999999999999
false
造成该结果的原因是,计算机二进制中,表示浮点数不精确造成的,一般都会损失精度。
float i=3.6;
这句代码会报错,原因是在java中默认为双精度型(double型),经double型向float型转换属于向下转型会造成精度损失,因此需要强制类型转换float i=(float)3.6;或者写成float i=3.6F;这样就可以了。