Day6---学习Java第二弹

2021-07-16

运算符和表达式

一、算术运算符和算术表达式

1、单目算术运算符

%---取余     ++---自加     -- ---自减   - ---取反

 

public class zijia {

    public static void main(String[] args) {
        int i =4,j;
        j=(i++)+(i++);
        System.out.println("j="+j+"i="+i);
        i=3;
        j=(++i)+(++i);
        System.out.println("j="+j+"i="+i);

    }

}

 

 

 需要注意的是:自加和自减运算只应用于变量,且位于变量不同侧有不同的效果

 

int a1=2,a2=2;
int b=(++a1)*2;
int c=(a2++)*2;

 

执行后b的值为6,c的值为4,当++在变量前面时,先对变量进行+1,然后代入整个运算,当++在变量后面时,先进行运算,再对变量进行+1

 

2、双目算术运算符

需要两个操作数,写在运算符的左右两边

比如 5/2=2

注意:两个整数类型的数据做除法时,结果只保留整数部分,如 2/3=0

      取模运算符的两端的操作数不只可以用于整型数,也可以应用于浮点数。

 

3、算术运算符的优先级

放个图 ヾ(๑╹◡╹)ノ"

 

 

 

 

4、算术表达式

注意点: 可使用括号改变优先级的次序

         过长的表达式可以分为几个表达式来写

         一个表达式里面不要连续使用两个运算符,可以用括号或者空格进行分隔

 

 1 public class suanshuyunsuanfu {
 2 
 3     public static void main(String[] args) {
 4         int x,y,z,a,b;
 5         a=11;
 6         b=3;
 7         x=a%b;
 8         y=3+ --a;
 9         z=7+(++b);
10         System.out.print("\tx="+x);
11         System.out.print("\ty="+y);
12         System.out.println("z="+z);
13     }
14 
15 }

 

 

 

 

二、赋值运算符和赋值表达式

 

eg: double s=6.5+45;  //将表达式6.5+45 的值赋给变量s

 

再放个图٩(๑❛ᴗ❛๑)۶

 

 

 

 

 

 

 1 public class fuzhiyunsuanfu {
 2 
 3     public static void main(String[] args) {
 4         int x,y,z;
 5         x=1;
 6         y=2;
 7         z=3;
 8         x-=y;
 9         y/=x;
10         z%=x;
11         System.out.print("x="+x+"\ty="+y+"\tz="+z);
12     }
13 
14 }

 

 

 

 

三、关系运算符和关系表达式

比较两个表达式大小关系的运算,结果为真true或者假false

 

再来一个图ヾ(✿゚▽゚)ノ

 

 

 1 public class guanxiyunsuanfu {
 2 
 3     public static void main(String[] args) {
 4         int i=1000;
 5         int j=100;
 6         boolean k;
 7         k= i<j;
 8         System.out.print("i<j is "+k);
 9     }
10 
11 }

 

 

四、逻辑运算符和逻辑表达式

 

逻辑运算符用于对布尔型变量进行运算,结果也是布尔型。

 

还有一个图ヾ(◍°∇°◍)ノ゙

 

 

 注意:从上图可以看出来&与&&,|与||的结果是一样的

所以我搜了一下&、|与&&和||的区别

&和|执行操作时,运算符左右两边的表达式首先被运算,然后对两边的结果进行与、或运算

&&与||执行操作时,从左到右,如果能从左边的表达式得到操作数并且能确定结果,则不再对右边的表达式进行运算。

分析比较而言,&&和||的运算速度更快。

 

 1 public class luojiyunsuan {
 2 
 3     public static void main(String[] args) {
 4         int i=3,j=4;
 5         boolean k1,k2;
 6         k1=(i<j) && (++i<j);
 7         k2=(i<j) || (i<j);
 8         System.out.print("k1="+k1+"k2="+k2);
 9     }
10 
11 }

 

 

 

五、位运算符与位表达式

 

对二进制数进行运算

 

最后一个图(๑╹◡╹)ノ"""

 

 

六、其他运算符

 

条件运算符:( a? b :c )当a为true时 表达式的值为b,否则为c

括号:优先级最高

域运算符(.):逐级向下的引用,如 System.out.println()

逗号(,):表达式的值为最后一个的值;x=1.y=2,x=x+y;则该式值为3

new:分配空间

type:强制类型转换

 

 

------------------------------------------------------------------------------------------------------------------------------

“短路”问题:

当计算逻辑表达式时,因为运算表达式比较多,按照先后运算,但是会出现短路,简单来说就是某段逻辑代码被跳过了,不执行了.

 1 public class duanluwenti {
 2 
 3     public static void main(String[] args) {//test1为真 test2为假 test3为真
 4 
 5         boolean b = test1(0) && test2(3) && test3(1) ;
 6 
 7         System.out.println("执行完毕,结果为:"+b);
 8 
 9         }
10     public static boolean test1(Integer i) {
11         System.out.println("执行test1");return i < 1;
12 
13         }
14     public static boolean test2(Integer i) {
15         System.out.println("执行test2");return i < 2;
16 
17         }
18     public static boolean test3(Integer i) {
19         System.out.println("执行test3");return i < 3;
20 
21         }
22     }
23         

 

结果为

 

 

从执行结果中可以看出,test3并没有执行到,这就是逻辑与中的短路现象。

分析:

例如:boolean类型的A,B,C

A && B && C

在这里就必须满足ABC同时为真时才为真。因为代码是从左到右执行的,当代码执行到B时,发现B为false,那么整个表达式就一定为false,那么程序就没有必要再去执行C了。

 

明天是Java控制语句

 

posted @ 2021-07-16 21:42  zrswheart  阅读(46)  评论(0编辑  收藏  举报