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 }