java05_JAVA类型转换:

JAVA类型转换:

分为两种:强制类型转换,自动类型转换。

低 .................................................................................高

byte,short,char—>int—>long—>float—>double


强制类型转换:(高到低)

  1. 常规转换。
int num1  = 127;
byte num2 =(byte)num1;
System.out.println(num1 +"  "+num2);  //127  127

System.out.println("--------------");
int num3  = 128;
byte num4 =(byte)num3;
System.out.println(num3 +"  "+num4);  //128  -128
  1. int类型值的运算得到的值还是int类型 。因为int类型存在范围(大约正负20亿),所以int类型的值之间的运算会导致值的溢出。(这种情况不会出现在比int容量小的类型运算里面。)
int money = 10_0000_0000;   //JDK7的新特性,数字之间可以用下划线分割,方便识别。
int years = 20;
int wage = money * years;
System.out.println(wage);
System.out.println("#####################");
//类型1
long wage1 = money * years;
System.out.println(wage1);
System.out.println("#####################");
//类型2
long wage2 = money * (long)years;
System.out.println(wage2);
System.out.println("#####################");

结果:
    
-1474836480
#####################
-1474836480
#####################
20000000000
#####################

当运算式中有两个类型的变量时,结果自动转换为高容量的变量值。(适用于int级之上)

int类型的容器范围大约在正负20亿之间。

当结果值高于这个范围的时候,出现溢出,导致结果异常。

类型1,值的转换是在计算完后转换的,对计算结果没有影响。

类型2 ,是在计算之前将years 的值转化为long类型,使结果转换为long类型,避免了变量的溢出。



自动类型转换:(低到高)
  1. 常规转换:
int num9 = 100;
long num10 ;
num10 = num9;        //由int转为long,低到高不需要强制转换。
System.out.println(num9 +"  "+num10);

结果:
100  100
  1. 比int容量小的类型运算:

    package operator;
    public class Day2 {
        public static void main(String[] args) {
            byte num1 = 127;
            byte num2 = 127;
            //结果1
            System.out.println(num1+num2);
            System.out.println("****************");
            short num3 = 32767;
            short num4 = 32767;
            //结果2
            System.out.println(num3+num4);
            System.out.println("****************");
            //结果3
            System.out.println(num1+num3);
        }
    }
    
    结果:
    254
    ****************
    65534
    ****************
    32894 
    

    byte的范围为(-128—127),结果1转换为int类型的200。

    short的范围为(-32768—32767),结果2转换为int类型的65534。

    byte类的127+short类的32767,结果3转换为int类型的32894 。


注意点:

1.不能对布尔值进行转换。

2.不能把对象类型转换为不相干的类型。

3.在把高容量转换到底容量的时候,强制转换。

4.转换的时候可能存在内存溢出,或者精度问题!

参考资料:狂神说Java Java零基础学习视频通俗易懂

posted @ 2021-02-27 01:11  猪无名  阅读(49)  评论(0编辑  收藏  举报