黑马程序员_毕向东_Java基础视频教程——类型转换(随笔)

类型转换

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
*/

 
posted @ 2020-05-17 22:11  kidrauhl  阅读(123)  评论(0)    收藏  举报