数据类型转换https://github.com/DuGuQiuBai/Java/blob/master/day02/code/05_%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2/DataTypeDemo3.java
1 /*
2 +:做加法操作
3 A:针对数据操作
4 B:针对字符进行做+
5 ASCII码表
6 '0' 48
7 'A' 65
8 'a' 97
9 C:针对字符串进行做+
10 在字符串的操作中,叫字符串连接符
11 */
12 class DataTypeDemo3 {
13 public static void main(String[] args) {
14 System.out.println('a');
15 System.out.println('a'+1);
16 System.out.println('A'+0);
17 System.out.println('0'+0);
18 System.out.println("-----------");
19
20
21 System.out.println('a'+'b');
22 System.out.println("a"+"b");
23
24 System.out.println("hello"+'a'+1); //左边字符串,往后拼的都是字符串
25 System.out.println('a'+1+"hello");
26 System.out.println("5+5="+5+5);
27 System.out.println(5+5+"=5+5");
28 }
29 }
强制类型转换带来的问题https://github.com/DuGuQiuBai/Java/blob/master/day02/code/05_%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2/DataTypeTest2.java
1 /*
2 byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
3 */
4 class DataTypeTest2 {
5 public static void main(String[] args) {
6 //byte b = 130;
7
8 //解决方案
9 //方案1
10 //int a = 130;
11
12 //方案2
13 byte b = (byte) 130;
14 System.out.println(b);
15 }
16 }
17
18 /*
19 十进制:130
20 A:第一步,先把十进制转换为二进制
21 二进制:000000000 000000000 000000000 100000010
22 由于此二进制是一个正数,所以,补码也是000000000 000000000 000000000 100000010。
23 B:做强制类型转换
24 二进制:000000000 000000000 000000000 100000010
25 截取后就变成了:100000010
26 C:操作后的数据是补码,你看到的是原码
27 符号位 数值位
28 补码: 1 00000010
29 反码: 1 00000001
30 原码: 1 11111110
赋值操作符https://github.com/DuGuQiuBai/Java/blob/master/day02/code/07_%E8%B5%8B%E5%80%BC%E8%BF%90%E7%AE%97%E7%AC%A6/OperatorTest.java
1 /*
2 面试题:
3 short s=1, s = s+1; short s=1, s+=1;
4 上面两个代码有没有问题,如果有,那里有问题
5 */
6 class OperatorTest {
7 public static void main(String[] args) {
8 //short s = 1;
9 //s = s + 1;
10 //有问题,可能损失精度
11
12 short s = 1;
13 s += 1; //s = s + 1;
14 //这个是没有问题的。
15 //因为这个式子等价于:
16 // s = (s的数据类型)(s + 1);
17 }
18 }