基本类型
java中一共有八个基本类型,
基本类型 | 数据范围 | 默认值 | 存储大小 |
---|---|---|---|
boolean | true/false | false | 1位 |
byte | [-128~127] (-2^7) – (2^7)-1 | 0 | 1个字节 |
short | (-2^15)-- (2^15)-1 | 0 | 2个字节 |
char | 0~2^16-1 | ‘\u0000’ | 2个字节 |
int | (-2)^31 – (2)^31-1 | 0 | 4个字节 |
float | 单精度 | 0.0f或0.0F | 4个字节 |
double | 双精度 | 0.0d或0.0D | 8个字节 |
long | (-2)^63 – (2)^63-1 | 0l或0L | 8个字节 |
1.关于赋值和运算
正常情况下任何整型常量都是int型,所以当给Long赋值进行运算时要指明常数为长整型,如果没有L或l就得不到正确结果;
int maxValue = Integer.MAX_VALUE;
//long num = 11l//容易混淆
// long num= maxValue +1;//同样会溢出
long num= maxValue +1L;
float num2 = 0.11F
同样对于浮点型来说,默认为double,所以声明为float时需要加F或f,由于小写l容易混淆所以最好用大写;
byte a1 =10,a2 = 9, a;
final byte b1 = 4,b2 =3,b;
//a = a1+a2;编译不通过
a = (byte)(a1+a2);
b = b1+b2;//两个同时都为final是不会转型
在进行运算时,会涉及到类型转换
一个double,float变两个
一个long变两个,其他会被变为int类型,此时就需要强制转换或定义为final
2.基本类型的包装类
Integer 、Long、Short、Byte、Character、Double、Float、Boolean、BigInteger、BigDecmail
其中 BigInteger、BigDecimal没有相对应的基本类型,主要应用于高精度的运算,BigInteger支持任意精度的整数,BigDecimal支持任意精度带小数点的运算。
J2SE5.0后提供了自动装箱与拆箱的功能,所以需要通过包装类来转换。比如:我们可以把int型包装成Integer 类的对象。
Integer i = 3;//自动装箱
// 相当于Integer i = Integer.valueOf(3);
i = i + 2;
// 此时等于这样
i = i.intValue() + 2;
// 等同于 i = Integer.valueOf(i.intValue() + 2);
Integer a1 = 10, b1 = 127;
Integer a2 = new Integer(10);//
Integer a3 = new Integer(12);
Integer a4 = 127;
System.out.println(a1==a2);//false
System.out.println(a1.equals(a2));//true
System.out.println(a4==b1);//true
从==比较的是栈上的地址,而equals比较的是内容可以看出,Int包装类有在定义时和String类有些相似,由于自动装箱可以将-128~127的int值存储起来当相同时直接共用一个地址;