Java 语法踩坑集合


类型转换

变量相加,首先提升类型,再做操作。
常量相加,它先做操作,然后判断结果是否在左边的范围内容,如果在就不报错。如果不在,报错。

1     public static void main(String[] args) {
2         // TODO Auto-generated method stub
3         byte b1=3,b2=4,b;
4         // b = b1+b2; // 右边类型自动提升
5         b = (byte)(b1+b2); // 显示类型转换
6         b = 3+4;
7     }

(1)计算机中数据的存储和运算都是采用补码进行的。
(2)数据的有符号表示法
        用0表示正号,1表示负号。
        A:原码
            正数:正常的二进制
            负数:符号为为1的二进制
        B:反码
            正数:和原码相同
            负数:和原码的区别是,符号位不变,数值位取反。1变0,0变1
        C:补码
            正数:和原码相同
            负数:反码+1

(3)补充:float浮点数在计算机中的表示
            符号位        指数位        底数位
            S        E        M

 1 public static void main(String[] args) {
 2         // byte b = 130;
 3  
 4         // 解决方案
 5         // 方案1
 6         // int a  = 130;
 7     
 8         // 方案2
 9         byte b = (byte) 130;
10         System.out.println(b); // -126
11     }
12 /*
13     十进制:130
14     A:第一步,先把十进制转换为二进制
15         二进制:00000000 00000000 00000000 10000010
16         由于此二进制是一个正数,所以,补码也是00000000 00000000 00000000 10000010。
17     B:做强制类型转换
18         二进制:00000000 00000000 00000000 10000010
19         截取后就变成了:10000010
20     C:操作后的数据是补码,你看到的是原码
21                 符号位        数值位
22         补码:    1            00000010
23         反码:    1            00000001
24         原码:    1            11111110
25 */

算术运算符

1     // %的最终结果和第一个数据的符号相关。
2     // 用%,如果余数为0,说明整除。
3     System.out.println(5%3); //2
4     System.out.println(5%-3);//2
5     System.out.println(-5%3);//-2
6     System.out.println(-5%3);//-2

++,--:自增自减运算符。
A:单独使用
    放在操作数据的前后,效果一样。
B:参与操作使用
    放在操作数前面,先自增或者自减,然后再参与运算
    放在操作数后面,先参与运算,然后再自增或者自减

 1 int a = 10;
 2 int b = a++;
 3 System.out.println(a);//11
 4 System.out.println(b);//10
 5 System.out.println("------------");
 6  
 7 int c = 10;
 8 int d = ++c;
 9 System.out.println(c);//11
10 System.out.println(d);//11
11  
12 System.out.println("------------");
13 int e = 10;
14 //e++;
15 ++e;
16 System.out.println(e); //11
17  
18 int i = 1;
19 System.out.println(i++ + ++i + i++ + ++i);//1+3+3+5

赋值运算符

1 // short s = 1;
2 // s = s + 1; 
3 // 有问题,可能损失精度
4  
5 short s = 1;
6 s += 1; //s = s + 1;
7 // 这个是没有问题的。
8 // 因为这个式子等价于:
9 // s = (s的数据类型)(s + 1);

关系运算符与逻辑运算符

&&和&的区别? 前者为关系运算符,有短路效果,只要左边是false,右边不执行。而后者为逻辑运算符,全部执行。
||和|的区别? 前者为关系运算符,有短路效果,只要左边是true,右边不执行。而后者为逻辑运算符,全部执行。

https://github.com/DuGuQiuBai/Java