1.JAVA操作符优先级
当一个表达式中出现多个操作符时,操作符的优先级决定了操作顺序。简单的规则就是:先乘除后加减,然后用括号明确规定计算顺序。
2.+,-,*,/,% ,=,>,<,==为一类,不做过多解释
3.逻辑运算符
- &&,||,!;会生成一个布尔值。
- 在使用逻辑运算符时,会遇到一种短路现象,即能够明确无误的确定整个表达式的值时,就不再计算表达式剩余的部分
4.直接常量
一般来说,在程序内使用了直接常量,编译器可以准确无误的知道生成什么类型,但有的时候确实磨棱两可的,这个时候需要对这些字符增加一些额外信息
double:D结尾
float:F结尾
long:L结尾
十六进制:0x开头+(0~9,a~f)
八进制:0开头
5.指数计数法
1.39e-43:1.39乘以10的负43次方
6.按位操作符
按位操作符操作基本数据类型中的bit,即二进制位。
|(或):二进制码只要有一个为1,结果为1
&(与):只要有一个为0,结果为0
^(异或):两个值不同,异或结果为1,两个值相同,异或结果为0
~(取反):1变0,0变1
7.移位操作符(>>;<<)
移位操作符只可用来处理整数类型。左移n位相当于乘以2的n次方,右移相当于除以2的n次方。
a<<=10: a的值乘以2的10次方再赋值给a。
8.三元操作符
boolean ? value1 : value2 ; boolean位true,表达式的值位value1,boolean为false,表达式的值为value2。
9.字符串的+,和+=
String a = "he"+"llo";//"hello"
int b = 0;
b+=10;//等价于b=b+10;
练习题:
1.模拟扔硬币的结果,统计正反两面的数量
1 public class ThrowCoinTest { 2 3 public static void main(String[] args) { 4 int frontFace = 0; 5 int oppositeFace = 0; 6 7 for (int i = 0; i < 100; i++) { 8 double d = Math.random(); 9 if (d >= 0.5) { 10 frontFace++; 11 }else{ 12 oppositeFace++; 13 } 14 } 15 System.out.println("正面:" + frontFace + "次"); 16 System.out.println("反面:" + oppositeFace + "次"); 17 } 18 }
2. 分别显示float和double指数计数法所能表示的最大和最小数字。
1 public class Shape { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 double dMax = Double.MAX_VALUE; 6 double dMin = Double.MIN_VALUE; 7 long lMax = Long.MAX_VALUE; 8 long lMin = Long.MIN_VALUE; 9 10 System.out.println("double 最大值"+dMax); 11 System.out.println("double 最小值"+dMin); 12 System.out.println("long 最大值"+lMax); 13 System.out.println("long 最小值"+lMin); 14 15 } 16 17 }
3.用代码展示equals和==的区别
1 public class EqualsMethod { 2 3 public static void main(String[] args) { 4 /** 5 * 1.String类下equals的方法:不同类型返回false,同为String类型,value相等返回true 6 * 2.Object类下equals的方法:等价于== 7 * */ 8 int v0 = 1; 9 String v1 = "1"; 10 String v2 = new String("1"); 11 System.out.println(v1.equals(v2)); 12 System.out.println(v1.equals(v0)); 13 14 Dog dog1 = new Dog(); 15 Dog dog2 = dog1; 16 Dog dog3 = new Dog(); 17 dog1.setName("Tony"); 18 dog1.setAge(6); 19 dog3.setName("Tony"); 20 dog3.setAge(6); 21 22 System.out.println("equals:"+dog1.equals(dog2)+" and ==:"+ (dog1==dog2)); 23 System.out.println(dog3.equals(dog2)); 24 } 25 26 }
4.编写一个具有两个常量的程序, 一个具有交替的二进制位1和0,其中,最低有效位为0, 另一个也有交替的二进制位,最低有效位为1, 以位操作符以所有可能的方式结合他们,然后用Integer.toBinaryString()显示
1 public class BitOperator { 2 3 public static void main(String[] args) { 4 int a = 0xaa; //10101010 5 int b = 0x55;//01010101 6 7 System.out.println("a的值是: "+Integer.toBinaryString(a)); 8 System.out.println("b的值是: "+Integer.toBinaryString(b)); 9 System.out.println("a|b的值是:"+Integer.toBinaryString(a|b));//只要有一个为1,那么结果是1 10 System.out.println("a&b的值是:"+Integer.toBinaryString(a&b));//只要有一个为0,那么结果是0 11 System.out.println("a^b的值是:"+Integer.toBinaryString(a^b));//两个值不同,异或结果为1,两个值相同,异或结果为0 12 System.out.println("~a的值是:"+Integer.toBinaryString(~a));//按位取反 13 System.out.println("~b的值是:"+Integer.toBinaryString(~b));// 14 15 } 16 17 }
2017-08-30