Java从入门到成神【03】运算符

1.算术运算符:

算数运算符有:+(加),-(减),*(乘),/(除),%(取余),++(自增),--(自减)。

其中,加减乘除的作用和数学中的加减乘除作用一样,所以不再赘述了。

%取余,就是做除法得到余数,例:

int a = 7%2;
System.out.println(a);//结果为1(商3余1)
int b = 8%4;
System.out.println(b);//结果为0(商2余0)

++自增,即在原来的基础上加1;--自减,即在原来的基础上减1。例:

int c = 1;
c++;
System.out.println(c);//结果为2,c++即在c为1的基础上加1

int d = 3;
d--;
System.out.println(d);//结果为2,d--即在d为3的基础上减1

++自增,--自减分别有两种情况,下面以自增为例进行说明,自减同理。

/*
*第一种情况:++符号在变量的前面,如++a
*第二种情况:++符号在变量的后面,如b++
*/

//第一种情况++a
int a = 2;
++a;//即 a = a+1;
System.out.println(a);//结果为3,一条语句中,变量自增单独使用时,即为加1

int b = 2;
int c = ++b;//这条语句中有自增操作和赋值操作
System.out.println(b);//结果为3
System.out.println(c);//结果为3,一条语句中,有多项操作时,++符号在变量前面,则先执行自增操作
                      //int c = ++b;这句可以理解为拆成以下两句:
                      //b = b+1;自增先执行
                      //int c = b;后赋值
//第二种情况d++
int d = 2;
int e = d++;//这条语句中有自增操作和赋值操作
System.out.println(d);//结果为3
System.out.println(e);//结果为2,一条语句中,有多项操作时,++符号在变量后面面,则后执行自增操作
                      //int e = d++;这句可以理解为拆成以下两句:
                      //int e = d;先赋值
                      //d = d+1;自增后执行

自减的两种情况--a和a--同自增。

2.关系运算符:

关系运算符有:>(大于),<(小于),>=(大于等于),<=(小于等于),==(相等),!=(不等)。 关系运算符的运算结果为boolean型,即结果不是true(对)就是false(错)。

其中>(大于),<(小于),>=(大于等于),<=(小于等于)与数学中的关系判断相同,不做赘述。

==(相等)用于判断两个基本数据类型(注意是基本数据类型!!!引用数据类型判断值是否相等不能用==)的值是否相等,例:

int f = 5;
int g = 5;
int h = 7;
boolean fg = (f == g);
boolean gh = (g == h);
System.out.println(fg);//结果为true
System.out.println(gh);//结果为false

!=(不等)用于判断两个基本数据类型(注意是基本数据类型!!!)的值是否不相等,例:

int i = 5;
int j = 5;
int k = 7;
boolean ij = (i != j);
boolean jk = (j != k);
System.out.println(ij);//结果为false
System.out.println(jk);//结果为true

3.逻辑运算符:

逻辑运算符有:&&(与,短路与),||(或,短路或),!(非),&(与),|(或)。逻辑判断的结果也是boolean型。
1) &&,与即为并且的意思,多个条件同时满足的结果才是true;只要有一个条件不满足则结果为false。例:

int n = 30;
boolean m = (n>20 && n<40);
System.out.println(m);//n等于30,同时满足大于20(true)和小于40(true)两个条件,所以结果为true

int o = 50;
boolean p = (o>20 && o<40);
System.out.println(p);//o等于50,满足大于20(true)的条件,但是不满足小于40(false)的条件,所以结果为false

所以,使用&&时,只要判断条件中有一项不满足(为false),则最终结果为false;只有所有判断条件都满足(为true)时,最终结果才为true。

2)||,或即为或者的意思,只要有一个条件满足,结果就是true;只有所有条件都不满足时,结果才为false。例:

int q = 20;
boolean r = (q>30 || q<40);
System.out.println(r);//q等于20,不满足大于30(false)的条件,但是满足小于40(true)的条件,所以最终结果为true

int s = 40;
boolean t = (s==50 || s==60);
System.out.println(t);//s等于40,不满足等于50(false)的条件,也不满足等于60(false)的条件,所以最终结果为false

所以,使用 || 时,只要判断条件中有一项满足(为true),则最终结果为true;只有所有判断条件都不满足(为false)时,最终结果才为false。

3)!,非即为取反,由于逻辑运算符的结果只有两种(true和false),所以取反的结果也只有两种,例如true取反为false,false取反为true。

4)&,也是与,基本效果和&&一样,但是&&具有短路特点,而&没有短路特点。

5)|,也是或,基本效果和 || 一样,但是 || 具有短路特点,而 | 没有短路特点。

6)短路。&&也被称为短路与,||也被称为短路或。因为它们都具备短路的特点。短路,就是具有多个判断条件时,若根据前面的条件就能得到最终结果,则不再判断后面的条件是否满足。例:

int a = 3;
int b = 5;
int c = 9;
System.out.println(a<b && ++b<c);//a<b满足条件,所以继续判断++b<c,判断前执行++b,
                                 //所以下面输出b的值为6,此处没有发生短路
System.out.println(b);//结果为6

int d = 3;
int e = 5;
int f = 9;
System.out.println(d>e && ++e<f);//d>e不满足条件,由此已经可以得到最终结果为false,
                                 //所以不会再判断++e<f,即此处发生了短路,
                                 //所以++e也没有被执行,所以下面输出e的值还是5
System.out.println(e);//结果为5

4.赋值运算符:

赋值运算符有:=,+=,-=,*=,/=,%=。

1)=,一个等于号就是赋值,将=右边的数据赋给坐变的变量。赋值在前面已经用到很多了,所以不再赘述。

2)+=,在原来的基础上加上一个数,再赋值回去。例:

int a = 5;
a += 1;//等价于a = a+1
System.out.println(a);//结果为6

3)-=,在原来的基础上减去一个数,再赋值回去。例:

int a = 5;
a -= 1;//等价于a = a-1
System.out.println(a);//结果为4

4)*=,在原来的基础上乘以一个数,再赋值回去。例:

int a = 5;
a *= 2;//等价于a = a*2
System.out.println(a);//结果为10

5)/=,以原来的数作为被除数,除以一个数,把结果(商数)赋值回去。例:

int a = 6;
a /= 2;//等价于a = a/2
System.out.println(a);//结果为3

6)%=,以原来的数作为被除数,除以一个数,把结果(余数)赋值回去。例:

int a = 5;
a %= 2;//等价于a = a%2
System.out.println(a);//结果为1

5.字符串连接运算符:

字符串连接运算符还是加号(+),只不过用于字符串的连接时,效果与数字相加时不一样。

字符串连接符会将int、long等数据类型和字符串连接成一个新的字符串。例:

System.out.println(""+123);//""是一个空字符串,123是int型数据,通过字符串连接符+连接后,输出一个"123"字符串
System.out.println(1+2+3+"");//1,2,3都是int型数据,所以它们使用+相加做的是加法,得6,继续+,后面是一个字符串"",所以又变成了字符串"6"
System.out.println(1+2+""+3);//1,2是int型数据,相加得3,继续+"",变成了字符串"3",再+3,变成了字符串"33"
System.out.println(1+2+"abc"+3);//结果"3abc3"

总结:

1)+号的两边都是基本数据类型时,做的是算术运算的相加。如1+2的结果是3。

2)+号的两边如果一边是基本数据类型,一边是字符串,则将基本数据类型与字符串连接成一个新的字符串。如2+"as"的结果是"2as"。

3)+号的两边都是字符串的话,则将两个字符串连接成一个新的字符串。如"ab"+"cd"的结果是"abcd"。

6.三目/条件运算符:

//格式:
boolean ? 语句1 : 语句2;

//例:
int a = 5;
int b = 7;
int c = (a>b) ? a : b;
//上面语句中,(a>b)就是格式中的boolean,a是格式中的语句1,b是格式中的语句2
//如果boolean为真(true),则整个三目运算的结果为语句1。即如果(a>b)为true,就将a赋值给c
//如果boolean为假(false),则整个三目运算的结果为语句2。即如果(a>b)为false,就将b赋值给c

 

猜你喜欢

转载自blog.csdn.net/qq_39516106/article/details/81056158
今日推荐