1.'+'在String类型中起连接字符串的作用
System.out.println(3+4+"hello!");//输出结果是7hello!
System.out.println("hello!"+3+4);//输出结果是hello!34
补充:
1.java中整数型默认为int,浮点数默认为double。如果要声明long型加L(l),声明float型加F(f)。
int binVal1=0b11010100;
int binVal3=0B10000000000000000000000000000011;
System.out.println(binVal1);//输出212System.out.println(binVal2);//输出105
byte binVal4=(byte)0b11101001;
System.out.println(binVal3);//输出-2147483645
byte binVal2=0B01101001;//128到+127所以byte中元素都没超过范围,如果直接将一个较小的整数常量(在byte,short范围内)赋给一个byte或short的变量,系统会自动把这个整数常量当成byte和short类型处理。
System.out.println(binVal4);//输出-23,强制转换,00000000000000000000000011101001 转换后保留八位 11101001 可以看作这八位在计算机中存储的形态为负数的补码 所以对应的原码为10010111=-23
注意:对于某类型的常数,如果有n位赋值的时候给出了n位,则最高位就是符号位,否则是数值位,符号位只有一位,其他没写出来的都是在原码中的0.
2. |和||、&和&& 的区别
int a=5; int b=10; if(a>4|b++<10) System.out.println("a="+a+"b="+b);//a=5,b=11虽然已经没必要求b但是这个运算就是和||的区别体现 int c=5; int d=10; if(a>4||b++<10) System.out.println("c="+c+"d="+d);
3. 运算符的结合性和优先级
所有的数学运算符是从左往右运算的,java中也不例外,只有单目运算符、赋值运算符和三目运算符是从右往左的。
运算符的优先级
运算符说明 | Java运算符 |
分隔符 | . [] () {} , ; |
单目运算符 | ++ -- ~ ! |
强制类型转换运算符 | (byte) |
乘法/除法/取余 | / * % |
加法/减法 | + - |
移位运算符 | << >> >>> |
关系运算符 | < <= >= > instanceof |
等价运算符 | == != |
按位与 | & |
按位异或 | ^ |
按位或 | | |
条件与 | && |
条件或 | || |
三目运算符 | ?: |
赋值 | = += -= *= /= &= != %= <<= >>= >>>= |