10_基本数据类型之间的转换

10_基本数据类型之间的转换

基本数据类型之间的转换

  • 在Java中,基本数据类型之间是可以相互转换的

  • Java语言中基本数据类型之间的转换方式:自动类型转换和强制类型转换。

  • 其中自动类型转换主要指从小类型到大类型之间的转换。大类型的内存空间远远大于小类型的内存空间。10_基本数据类型之间的转换

    /*
    	编程实现基本数据类型之间转换的使用
     */
     public class TransformTest {
    	 
    	 public static void main(String[] args) {
    		 
    		 // 1、声明两个变量并初始化
    		 byte b1 = 10;
    		 short s1 = 20;
    		 // 2、打印变量的数值
    		 System.out.println("b1 = " + b1); // b1 = 10
    		 System.out.println("s1 = " + s1); // s1 = 20
    		 
    		 System.out.println("-------------------");
    		 // 3、实现自动类型转换的使用
    		 // 表示将变量b1的数值赋值给变量s1,并覆盖变量s1中原理的数值,相当于从byte类型到short类型的转换,小到大,自动转换 ------> 自动完成,不需要我们做额外的事情
    		 s1 = b1;
    		 System.out.println("b1 = " + b1); // b1 = 10
    		 System.out.println("s1 = " + s1); // s1 = 10
    	 }
     }
    
  • 其中强制类型转换主要指从大类型到小类型之间的转换,语法格式:目标类型 变量名 = (目标类型)源类型变量名;

    // 4、实现强制类型转换的使用
    		 // 表示将变量s1的数值赋值给变量b1,并覆盖变量b1中原来的数值,相当于从short类型到byte类型的转换,大到小,强制转换
    		 // s1 = 20;
    		 s1 = 128; // 故意加该行代码
    		 /*	
    			为什么会是-128? 这也就是强转造成的损失
    				128(short 2个字节  16位2进制位): 0000 0000 1000 0000 => 
    				强制赋给byte类型的变量(1个字节 8位2进制位 默认取低8位的数值) 1000 0000(负的二进制)=> 
    				0111 1111(先减1) => (按位取反)1000 0000 => 合并为十进制整数 => 128 => 添上负号 -128
    		 */
    		 // b1 = s1; // 错误: 不兼容的类型: 从short转换到byte可能会有损失  报错的原因:short 是2个字节,byte 是1个字节
    		 b1 = (byte) s1;
    		 System.out.println("b1 = " + b1); // b1 = 20 -128
    		 System.out.println("s1 = " + s1); // s1 = 20 128
    
  • 强转有风险,操作需谨慎!在代码中能不做强制类型转换就不做强制类型转换,因为强转是有风险的,是有可能会造成数据的损失的。

上一篇:正则匹配问题


下一篇:内存泄漏避雷!你真的了解重写equals()和hashcode()方法的原因吗?