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 classThrowCoinTest {2
3 public static voidmain(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 }
View Code
2. 分别显示float和double指数计数法所能表示的最大和最小数字。
1 public classShape {2
3 public static voidmain(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 }
View Code
3.用代码展示equals和==的区别
1 public classEqualsMethod {2
3 public static voidmain(String[] args) {4 /**
5 * 1.String类下equals的方法:不同类型返回false,同为String类型,value相等返回true6 * 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 = newDog();15 Dog dog2 =dog1;16 Dog dog3 = newDog();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 }
View Code
4.编写一个具有两个常量的程序, 一个具有交替的二进制位1和0,其中,最低有效位为0,另一个也有交替的二进制位,最低有效位为1,以位操作符以所有可能的方式结合他们,然后用Integer.toBinaryString()显示
1 public classBitOperator {2
3 public static voidmain(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 }
View Code
2017-08-30