Java 数据类型 Part04 整数型

/*
    关于Java当中的整数型:

    数据类型                占用空间大小                默认值              取值范围
    ----------------------------------------------------------------------------
    byte                        1                      0                [-127~128]
    short                       2                      0                [-32768~32767]
    int                         4                      0                [-2147483648~2147483647]
    long                        8                      0L                   

    1、java语言当中的“整数型字面值”被默认当作int类型来处理。要让这个“整数型字面值”被当作long类型来处理的话,
    需要在 整数型字面值 后面添加l或者L,建议使用大写L

    2、java中的整数型字面值有三种表示方式:
        第一种:十进制【是一种缺省默认的方式】
        第二种:八进制【编写八进制整数型字面值时要以0开头】
        第三种:十六进制【编写十六进制的整数型字面值的时候要以0x开头】

    3、

*/
public class DataTypeTest04{
    public static void main(String[] args){
        int a = 10;
        int b = 010;    //八进制
        int c = 0x10;   //十六进制

        System.out.println(a);  //10
        System.out.println(b);  //8
        System.out.println(c);  //16

        System.out.println(a+b+c);  //34

        //123这个整数型字面值是int类型
        //i 变量声明的时候也是int类型
        //int类型的123赋值给int类型的变量i,不存在类型的转换
        int i = 123;
        System.out.println(i);

        //456整数型字面值是int类型
        //x 变量声明的时候是long类型
        //int类型的字面值赋值给long类型的变量x,存在类型转换
        //小类型转换大类型可以自动转换
        long x = 456;
        System.out.println(x);

        long y = 2147483647;
        System.out.println(y);

        //long z = 2147483648;//超出int类型范围报错
        //解决错误
        long z = 2147483648L;//数字后面加上L,一开始就当作long类型,也就不超long类型范围,也不存在类型转换。
        System.out.println(z);



        long l = 100L;
        //int m = l; // 大容量直接赋值给小容量会报错

        //大容量赋值给小容量需要进行强制类型转换
        //加上强制类型转换之后才能编译通过
        //但是要慎重使用,因为运行过程中可能会损失精度,后果可能会很严重
        int m = (int)l;
        System.out.println(m);


        //byte类型有特殊招待,无需强制转换数据类型也能直接赋值给byte
        //前提是 没有超过byte类型的数据范围
        byte d = 50;//可以
        byte e = 127;//可以 
        //byte f = 128;//编译报错,超出byte类型范围,需要使用强制类型转换符

        short f = 32767;//可以
        //short h = 32768;//不可以,编译报错

        char cc = 65535;//可以
        cc = 65536;//不可以,编译报错

        /*
            当一个整数字面值没有超过byte、short、char的取值范围,这个字面值
            可以直接赋值给byte、short、char类型的变量。
            这种机制SUN允许了,目的是为了方便程序员的编程。
        */
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。