java语言基础--数据类型详解:整数没有超范围可以直接赋值给char、原码反码补码

1、整数没有超范围可以直接赋值给char

 1 /*
 2 1、整数能否直接赋值给char
 3 2、char x = 97;
 4      这个java语句是允许的,并且输出语句结果是‘a’
 5 经过测试得出两个结论:
 6    2.1当一个整数赋值给char类型变量的时候,会自动转换成char字符型,最终结果是一个字符。
 7    2.2当一个整数没有超出byte,short,char的取值范围的时候,这个整数可以直接赋值给byte,short,char类型的变量。
 8 */
 9 
10 public class CharTest{
11    public static void main(String[] args){
12       
13           char c1 = 'a';
14           System.out.println(c1);//输出:a
15           
16           //这里会做类型转换吗
17           //97是int类型
18           //c2是char类型
19           char c2 = 97;
20           System.out.println(c2);//输出:a
21 
22           //char类型的取值范围:【0~65525】
23           char c3 = 65535;
24           System.out.println(c3);
25 
26           //错误:不兼容类型:从int转换到char可能会有损失
27           char c4 = 65536;
28           //解决:
29           char c4 = (char)65536;
30          
31 
32           //编译通过 
33           byte  x = 1;
34           short y =1;
35           char z = 1;
36    }
37 }

 

2、原码反码补码

 1 /*
 2     1、计算机在任何情况下都能识别二进制
 3     2、计算机在底层存储数据的时候,一律存储的是“二进制的补码形式”
 4          计算机采用补码形式存储数据的原因是:补码形式效率最高
 5     3、对于一个正数来说:二进制原码、反码、补码是同一个,完全相同
 6     4、对于一个负数来说:二进制原码、反码(符号位不变,其他位取反)、补码(反码+1)
 7      5、分析  byte b = (byte) 150;
 8           这个b是多少?
 9           int类型4个字节150的二进制码是:
10           00000000 00000000 00000000 10010110
11           强制转换成byte,最终计算机中的二进制码是:
12           10010110(补码形式)
13            逆推出对应的原码 11101010
14 */
15 public class IntTest{
16    public static void main(String[] args){
17         byte b = (byte) 150;
18         System.out.println(b);//输出:-106
19    }
20 }

 

posted @ 2021-04-09 10:30  lraj  阅读(356)  评论(0编辑  收藏  举报