5#关于数据数值的转换

数据类型转换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 }
原文地址:https://www.cnblogs.com/amnotgcs/p/10732066.html