Java初级学习(四)Java运算符

1.Java运算符

*运算符的优先级要求:多用(),提高代码可读性,不要只依靠运算符的优先级,也不用刻意去记。

  • 算术运算符:+     -      *       /     %(取余)     ++         -- 
  • 赋值运算符:=
  • 关系运算符:>      <       >=       <=      ==       !=(不等于)      instanceof           ========》这里结果是true或false
  • 逻辑运算符:&&(与and,只有左右都为true时结果才为true)      ||(或or)          !(非no)
  • 位运算符:   
  • 条件运算符:? :

 

1)算数运算符

(1)%:11除以5等于2余1,也就是  11%5=1

(2)++   -- 

      前缀自增自减法(++i,--i): 先进行自增或者自减运算,再进行表达式运算。

   *执行一次  i++   或者  ++i  就等于执行一次   i=i+1    这条命令。

  同理,执行一次  i--   或者  --i  就等于执行一次  i=i-1    这条命令。

 

  后缀自增自减法(i++,i--): 先进行表达式运算,再进行自增或者自减运算。

 1 public class Demo04 {
 2     public static void main(String[] args){
 3 
 4         int i = 2;//定义一个变量
 5         //i=i+1;下面一行的++i,就相当于在执行给b赋值之前,先执行一遍i=i+1。
 6         int a = ++i;//先运行i=i+1,再给b赋值。
 7         int b = i++;
 8         //i=i+1;上面一行的++i,就相当于在执行给b赋值之后,再执行一遍i=i+1。
 9         System.out.println(a);
10         System.out.println("现在i为"+i);   //这里i=3,因为上面有个++i
11         System.out.println("=====================");
12 
13         //前缀自增自减,先进行自增自减,再进行表达式
14         int b1=2*++i;  //2*(i+1)=8
15         System.out.println("现在i为"+i);   //这里i=4,因为上面有两个++i
16         int c1=2*--i;  //2*(i-1)=6
17         System.out.println("现在i为"+i);   //这里i=3,因为上面有个--i
18 
19         //后缀自增自减,先进行表达式,在进行自增自减。
20         int b2=2*i++;   //先计算b2=2*i=6,后面的++也就是b2++,但是这里我要输出的就是b2,所以不看b++是多少。直接输出b2=6
21         System.out.println("现在i为"+i);  //这里i=4,因为上面有一个i++
22         int c2=2*i--;   //与上面同理
23         System.out.println("现在i为"+i);  //这里i=3,因为上面有一个i--
24         System.out.println(b1);
25         System.out.println(c1);
26         System.out.println(b2);
27         System.out.println(c2);
28 
29     }
30 }

 

i+1和i++的区别

 1 public static void main(String[] args) {
 2         //i+1与i++的区别
 3         int i1 = 1;
 4         int i2 = 1;
 5 
 6         i1 = i1 + 1;
 7         System.out.println(i1);     //i1=2
 8         i2 = i2++;
 9         System.out.println(i2);     //i2=1
10     }

 

Math类:

1 //Math类,pow方法表示次方,这里意为2^3
2         double pow = Math.pow(2, 3);
3         System.out.println(pow);

 

2)赋值运算符    int i = 1;

3)关系运算符

instanceof:用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)   

运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。

1 //如果instanceof左侧的name是右侧的String类型,那么result就为true
2         String name = "James";
3         boolean result = name instanceof String;

  

4)逻辑运算符

1 public class Demo05 {
2     public static void main(String[] args) {
3        int a=10;
4        int b=20;
5         System.out.println(a<11&&b<21); //true
6         System.out.println(a<11||b>21); //true
7         System.out.println(!(a<11||b>21)); //false
8     }
9 }

短路运算:当使用&&逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。

1 //短路运算
2         int d=5;
3         boolean e = (d<5)&&d++>10;
4         System.out.println(e);
5         System.out.println(d);  //因为d<5为false,所以不会判断后面的是true还是false,所以不会执行d++,d仍然为5

5)位运算符

 1 public class Demo06 {
 2     public static void main(String[] args) {
 3         int A = 60; //A = 60 = 00111100
 4         int B = 13; //B = 13 = 00001101
 5         int c=0;
 6         c = A&B;
 7         //只有1和1为1,1&1=1,1&0=0,0&0=0
 8         System.out.println(c);  //12=0000 1100
 9 
10         c = A|B;
11         //只有0|0为0,1|1=1,1|0=1,0|0=0
12         System.out.println(c);  //0011 1101
13 
14         c = A^B;
15         //相同为0,否则为1,1^1=0,0^0=0,1^0=1
16         System.out.println(c);  //0011 0001
17 
18         c = ~B;
19         //取反
20         System.out.println(c);  //1111 0010
21 
22         c= A<<2;
23         //按位左移
24         System.out.println(c);  //A = 0011 1100 ===》1111 0000
25 
26         c= A>>2;
27         //按位右移
28         System.out.println(c);  //A = 0011 1100 ===》1111
29 
30         c= A>>>2;
31         //按位右移补零操作符
32         System.out.println(c);  //A = 0011 1100 ===》0000 1111
33 
34         int d = 2;  //0000 0010
35         //计算2^3,三种方法
36         int pow1 = d*d*d;
37         int pow2 = (int) Math.pow(d,3);
38         int pow3 = d<<2;    //0000 0010 右移2位就是0000 1000,也就是8,2^3。
39         System.out.println(pow1);
40         System.out.println(pow2);
41         System.out.println(pow3);
42     }
43 }

 

6)条件运算符

 

1 public class Demo05 {
2     public static void main(String[] args) {
3         int a=10;
4         //条件运算符,如果a=10成立,那么c=20,否则c=30
5         int c=(a==10)?20:30;
6         System.out.println(c);
7     }
8 }

 

 1 public static void main(String[] args) {
 2         //逻辑运算符
 3         int a=10;
 4         int b=20;
 5         //比较a、b的大小
 6         int sum=a>b ? a:b;
 7         System.out.println(sum);
 8         
 9         //a=a+b的偷懒写法
10         a+=b;     //a=a+b
11         System.out.println(a);  //30
12         a-=b;     //a=a-b
13         System.out.println(a);  //-10
14 
15         //字符串连接符 +
16         System.out.println(a+b);    //30,这里会把+当做运算符
17         System.out.println(""+a+b); //1020,当运算中有String类型的值时,+会被当做连接符
18         System.out.println(a+b+""); //30,运算先后的问题,这里先运算了a+b,由于没有String类型在前面,就会被当做运算符。
19 }

 

posted @ 2021-06-11 10:46  阮真冬  阅读(84)  评论(0)    收藏  举报