Java 零基础视频教程 P91-P95

 P91 Java零基础---自动类型转换

小容量可以自动转换成大容量,这种操作被称为:自动类型转换。

long b=200;

System.out.println(b);

//这个不存在类型转换:

//在整数型字面量300后面加一个L之后,300L联合起来就是一个long类型的字面量。

//c变量是long类型,long类型赋值给long类型不存在类型转换

long c=300L;

System.out.println(c);

 P92 Java零基础---过大的整数

//d变量是long类型,小容量可以自动赋值给大容量,自动类型转换。

long d=2147483647;//  2147483647是int最大值。
System.out.println(d);



//编译器会报错:

//在java中,整数型字面量一上来编译器就会将它看做int类型

//2147483648  已经超出了int的范围,所以在没有赋值之前就出错了。
//不是e放不下2147483648,e是long类型,完全可以容纳2147483648
//只不过2147483648本身已经超出了int类型。
//错误:整数太大

//long e=2147483648;
long e=2147483648L;  //就不会报错了

System.out.println(e);

 P93 Java零基础---强制类型转换

/*
    1.小容量直接赋值给大容量,被称为自动类型转换。
    2.大容量不能直接赋值给小容量,需要使用强制类型转换符进行转换。
    注意:强制类型转换符之后,虽然编译通过了,但是运行的时候可能会损失精度。
    
*/
public class IntTest03{
    public static void main(String[] args){
        //不存在类型转换。
        //100L是long类型字面量,x是long类型字面量。
        
        long x=100L;
        
        //x是long类型,占用8个字节,而y变量是int类型,占用4个字节。
        //在java语言中,大容量可以直接赋值个小容量吗。
        //错误:不兼容的类型,从long转换到int可能有损失。
        
        //int y=x;
        //这个(int)就是强制类型转换符,加上去就可以编译通过了。
        //注意:编译虽然通过了,但运行时可能损失精度。
        
        int y=(int)x; 
        System.out.println(y);
        
        //定义变量a int类型,赋值100
        int a=100;
        System.out.println(a);
        
        int b=a; //将变量a中保存的值100复制一份给b变量。
        System.out.println(b);
    }
}

 

 P94 Java零基础---损失精度以及不超范围可以直接赋值byte和short

 

/*
    java中有一个语法规则:
        当这个整数型字面量没有超出byte的取值范围,那么这个,
        整数型字面量可以直接赋值给byte类型的变量。
    
    这种语法机制就是为了方便些代码存在的。
*/

public class IntTest04{
    public static void main(String[] args){
        //分析:以下代码编译可以通过吗?
        //300被默认当做int类型
        //b变量是byte类型
        //大容量转换成小容量,要想编译通过,必须使用强制类型转换符
        //错误:不兼容的模型,从int转换到byte可能会有损失
        
        //byte b=300;
        //要想让以上的程序编译通过,必须加强制类型转换符
        //虽然编译通过了,但是可能精度损失。
        //300这个int类型对应的二进制:
        // 00000000 00000000 00000001 00101100 
        /*    2 300    0
            2 150    0
            2  75    1
            2  37    1
            2  18    0
            2    9    1
            2    4    0
            2    2    0
            2    1    1
        */
        
        
        //byte占用1个字节,砍掉前三个字节,结果是:00101100(44) 
        byte b=(byte)300;
        System.out.println(b); //44
        
        //1是int类型,默认当做int类型来看。
        //x是byte类型,1个字节,大容量无法直接转换为小容量。
        //按说会编译报错。
        byte x=1;
        byte y=127;
        //错误:不兼容的类型,从int转换到byte可能会有损失。
        //byte z=128;
        
        /*
            当整数型字面量没有超出short类型取值范围的时候,该字面量可以直接赋值给
            short类型的变量
        */
        short s=1;
        short s1=32767;
        //short s2=32768;  //错误,超出short的取值范围,
        
        
    }

 

P95 Java零基础---总结复习

 

posted @ 2022-05-12 06:35  生如逆旅,一苇以航  阅读(32)  评论(0)    收藏  举报