JAVA操作符

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 }
View Code

  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 }
View Code

   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 }
View Code

  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 }
View Code

                                                                                                               2017-08-30

posted @ 2017-08-30 16:35  vvning  阅读(180)  评论(0编辑  收藏  举报