JavaSE基础知识(八)

23、运算符

*算术运算符

*关系运算符

*逻辑运算符

*赋值类运算符

*字符串连接运算符

*三元运算符

-算术运算:

+ 求和

– 相减

* 乘积

/ 商

% 求余数【取模】

++ 自加1

— 自减1

重点:++ –运算

int k=10;

k++;

int y=10;

++y;

自加运算总结:++运算可以出现在变量前也可以出现在变量后,无论

是变量前还是变量后只要++运算结束,该变量中的值

一定会自加1。

//++出现在变量后,先赋值,后自加(自减)1

int a=100;

int b=a++;

System.out.println(a);//101

System.out.println(b);//100

//++出现在变量前,先自加(自减)1,后赋值

int m=20;

int n=++m;

System.out.println(m);//21

System.out.println(n);//21

int c=100;

System.out.prinln(c++);//100

System.out.println(c);//101

int a=100;

System.out.println(++a);//101

System.out.println(a);//101

-关系运算符:

> 大于

>= 大于等于

< 小于

<= 小于等于

== 等于

!= 不等于

关系运算符的运算结果一定是布尔类型:true/false

关系运算符的运算原理:

int a=10;

int b=10;

a>b; 比较的时候,比较的是a中保存的10这个值和b中保存的10这个值之间的大小比较。

a==b 也是如此。

-逻辑运算符:

& 逻辑与(两边的算子都是true,结果才是true)

| 逻辑或(两边的算子只要有一个是true,结果就是true)

! 逻辑非(取反,!false就是true,!true就是false,这是一个单目运算符)

^ 逻辑异或(两边的算子只要不一样,结果就是true)

&& 短路与

|| 短路或

注意事项:

-逻辑运算符要求两边的算子都是布尔类型,并且逻辑运算符最终的运算结果也是一个布尔类型。

-短路与和逻辑与最终的结果是相同的,只不过短路与存在短路现象。

-短路或和逻辑与最终的结果是相同的,只不过短路或存在短路现象。

-什么时候发生短路现象?

-什么时候选择使用逻辑与运算符?什么时候选择使用短路与运算符?

若不确定优先级,使用括 。

//逻辑与和短路与

int x=10;

int y=8;

//逻辑与

System.out.println(x<y & ++x < y);

System.out.println(x);//11

//逻辑与和短路与

int x=10;

int y=8;

//短路与

System.out.println(x<y && ++x < y);//x<y结果是false,整个表达式结果已经确定是false

//所有后面的表达式没有再执行,这种现象被称为短路现象。

//短路与才会有短路现象,逻辑与是不会存在短路现象的。

System.out.println(x);//10

//从某个角度来看,短路与更智能,由于后面的表达式可能不执行,

所以执行效率更高,这种方式在实际的开发中使用较多,短路与比逻辑与

使用的多,短路与更常用。

但是,在某些特殊的业务逻辑当中,要求运算符两边的算子必须全部执行,

此时必须使用逻辑与,不能使用短路与,使用短路与可能导致右边的表达

式不执行。

-赋值运算符

*赋值类运算符包括两种:

*基本的赋值运算符

=

*扩展的赋值运算符

+= 【+=运算符可以翻译为“追加/累加”】

-=

*=

/=

%=

byte x=10;

x=x+5; //编译 错

x+=5;//编译通过 等同于:x=(byte)(x+5),其实并不等同于:x=x+5

-重要结论:扩展类的赋值运算符不改变运算结果类型,假设最初这个变量的类型是

byte类型,无论 怎么进行追加或追减,最终该变量的数据类型还是byte类型。

-字符串连接运算符

关于java中的“+”运算符:

(1)、+运算符在java语言当中有两个作用:

*加法运算,求和

*字符串的连接运算

(2)、当“+”运算符两边的数据都是数字的话,一定是进行加法运算。

(3)、当“+”运算符两边的数据只要有一个数据是字符串,一定会进行字符串连接运算。

并且,连接运算之后的结果还是一个字符串类型。

数字+数字—>数字【求和】

数字+ ”字符串“—>”字符串”【字符串连接】

(4)、在一个表达式中出现多个”+“,在没有添加小括 的前提下,遵循至左向右的顺序依次运算。

例如:

System.out.println(10+20);//结果是30

System.out.println(10+20+30);//结果是60

System.out.println(10+20+”30″);//结果是2030

System.out.println(10+(20+”30″));//结果是102030

-三元运算符/三目运算符/条件运算符

1、语法规则:

布尔表达式?表达式1:表达式2

2、三元运算符的执行原理?

当布尔运算表达式的结果是true的时候,选择表达式1作为整个表达式的执行结果。

当布尔运算表达式的结果false的时候,选择表达式2作为整个表达式的执行结果。

例子:

public class DataTest06{

public static void main(String[] args){

boolean sex=false;

char c=sex?’男’:’女’;

System.out.println(c);//输出 女

sex=true;

c=(sex?’男’:’女’);

System.out.println(c);//输出 男

/*

sex=false;

char c=sex?”男”:’女’;//编译错误,类型不兼容

*/

System.out.println(sex?’男’:”女”);

}

}

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年8月13日
下一篇 2020年8月13日

相关推荐