类型转换

class Test{
    public static void main(String[] args) {
        
        byte b = 3;
   //   b = b + 2;        
/*
	Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失
                b = b + 2;
                      ^
		     1 个错误   错误: 编译失败	
           【这是Java是强类型语言导致的】
*/

/*  
  错误地方:
           byte b = 3;
           b = b + 2; 
  错误原因:
     2 是整数,默认是int型占4个字节、32位。不同数据类型之间不可以直接进行运算。对于整数类型来讲,可以进行运算,但前提是需要进行一个叫做 “ 自动类型提升 ”的操作,提升为同一种数值类型的操作
     
     //提升原则是:“ 以大为主 ,小的往大提升 ”
     
*/      
        //将 b = b + 2; 改写成:
        b = (byte)(b + 2);  //【要由括号】
        //这就是强制类型转换 变量名 = (数据类型)(表达式);
        
        System.out.println( b );
    }
}

/*
	输出结果:
			  5
*/
class Test{
    public static void main(String[] args){
        
        System.out.println(\'A\' + 0);
        
        System.out.println(\'1\' + 0);
    }
}
/*
	输出打印结果:
				65
				49
*/
  • 自动类型转换(也叫隐式类型转换
  • 强制类型转换(也叫显式类型转换
  • 类型转换的原理
  • 什么时候要用强制类型转换
  • 表达式的数据型自动提升
    1. 所有的 byte 型、short 型和 char 型的值将被提升到 int 型。
    2. 如果一个操作数是 long 型,计算机结果就是 long 型
    3. 如果一个操作数是 float 型,计算机结果就就是 float 型。
    4. 如果一个操作数是 double 型,计算机结果就是 double 型。
/*
Q: 
  int 和 float 在内存中都是占两个字节、32位, float 和 int 做运算时结果是 float 和 int?
A:
  结果是 float ,因为 float 小数点
*/

class Test{
    public static void main(String[] args){
		
		int i = 3;
		float f = 3.14f;
		f = f - i;   

        System.out.println(f);
        //System.out.println( (char)(\'a\' +1 ) );
    }
}  

/*
	输出打印结果:
				0.1400001
*/
  • 分析
    1. System.out.println( \’a\’ ) 与 System.out.println( \’a\’ +1 )的区别。
class Test{
    public static void main(String[] args){
        
        System.out.println(\'a\');
        //打印出a而不是97的原因是,因为计算机会把字符本身作为输出的效果显示
        
        System.out.println(\'a\' + 1);
        // \'a\' + 1代表在做运算  a对应的十进制数 + 1
        //字母 a 在ASCII表中对应的十进制数是97,97 + 1 = 98
    }
}
/*
	输出打印结果:
			   a
			   98
*/
class Test{
    public static void main(String[] args){
        
        // char 型强制类型转换成 int 型
        System.out.println( (int)(\'a\') );
        
        // int 型强制转换成 char 型
        System.out.println( (char)(\'a\' +1 ) );
    }
}
/*
		输出结果:
				 97
				 b
*/

 

版权声明:本文为chchchch原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/chchchch/p/12907281.html