基本类型

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值存储起来当相同时直接共用一个地址;

收藏 打印