JavaSE:运算符 (学习笔记)

目录

一,算术运算符

[【1】 共同点:](#【1】 共同点:)

[【2】 不同点:](#【2】 不同点:)

二,关系运算符

三,逻辑运算符

[2,&和&&的区别和联系 { |和||的区别和联系 }---两题类似](#2,&和&&的区别和联系 { |和||的区别和联系 }---两题类似)

四,赋值运算符

五,拓展赋值运算符

六,条件运算符

七,位运算符

八,运算符的优先级

九,运算符总结表


一,算术运算符

+, -, *, /, %, ++(自增),--(自减)

  1. **+**的作用:(1)表示正数。(2)表示相加操作。(3)进行字符串的连接

  2. %:用来求余数。

  3. / : 表示两个数相除运算

1,i++ 与 ++i 的异同之处 (i--和--i的异同之处)

【1】 共同点:

1、i++和++i都是变量自增1,都等价于i=i+1

2、如果i++,++i是一条单独的语句,两者没有任何区别

3、i++和++i的使用仅仅针对变量。 5++和++5会报错,因为5不是变量。

【2】 不同点:

如果i++,++i不是一条单独的语句,他们就有区别

i++ :先运算后增1。

++i : 先增1后运算。

二,关系运算符

>, <, >=, <=, ==, !=

1,关系运算符最终结果:要么是true,要么是false。

2,使用关系运算符,可以获得boolean的结果。

三,逻辑运算符

&, |, &&, ||, !, ^

1,运算符左右连接的都是 布尔类型的操作数,最终表达式的结果是布尔值:true或者false。

2,逻辑与:& ------只要有一个操作数是false,那么结果一定是false。

3,短路与:&& ------效率高一些,只要第一个表达式是false,那么第二个表达式就不用计算

了, 结果一定是false。

4,逻辑或:| ------只要有一个操作数是true,那么结果一定是true。

5,短路或:|| ------效率高一些,只要第一个表达式是true,那么第二个表达式就不用计算

了, 结果一定是true。

6,逻辑非:! ------相反结果。

7,逻辑异或:^ ------两个操作数相同,结果为false,不相同,结果为true。

2,&和&&的区别和联系 { |和||的区别和联系 }---两题类似

【1】联系

&和&&都可以用作逻辑与运算符,当运算符两边的表达式的结果或操作数都为true时,整个运算结果才为true,否则,只要有一方为false,结果都为false。

前提条件:两边的操作数或者表达式都是boolean类型

【2】区别

1, &逻辑运算符称为 逻辑与运算符 ,&&逻辑运算符称为 短路与运算符

对于&:无论任何情况,&两边的操作数或表达式都会参与计算。

对于&&:当&&左边的操作数为false或左边表达式结果为false时,&&右边的操作数或表达式将不参与计算,此时最终结果都为false。

综上所述,如果逻辑与运算的第一个操作数是false或第一个表达式的结果为false时,对于第二个操作数或表达式是否进行运算,对最终的结果没有影响,结果肯定是false。推介平时多使用&&,因为它效率更高些。

  1. &还可以用作位运算符。当&两边操作数或两边表达式的结果不是boolean类型时,&用于按位与运算符的操作。

四,赋值运算符

=

1,**=**的作用: 将等号右侧的值赋给等号左侧。

五,拓展赋值运算符

+=,-=, *=, /=

1,a+=b 相当于 a=a+b,两者的区别是:

(1)a+=b 可读性稍差,编译效率高,底层自动进行类型转换。

(2)a=a+b 可读性好,编译效率低,手动进行类型转换

//请问 a+=b 相当于 a=a+b,那么 a+=b 也相当于 a=b+a 吗?

对于基本数据类型来说:没区别

a:10 b:40

a=a+b a=b+a

a=50 a=50

对于String类型来说:不一样

a:"u" b:"x"

a=a+b a=b+a

a="ux" (正着拼) a="xu" (倒着拼)

六,条件运算符

? :

1,又称:三元运算符 / 三目运算符

2,格式: a?b:c [ 简写版if---else选择结构 ] 【注意: b 和c 必须是相同数据类型的】

其中a是一个布尔类型的表达式,返回结果要么是true要么是false。

通过a的结果决定 最终表达式的结果:

如果a的结果是true,那么表达式最终结果为b;

如果a的结果是false,那么表达式最终结果为c。

七,位运算符

&, |, ^, ~ , >>, <<, >>> (了解!!!)

1,运算符左右连接的是具体的数值

2,按位与**&** ; 按位或 | ; 按位异或 ^ ; 取反 ~

左移运算符**>>** :左移一位相当于乘2; 右移运算符**<<**:右移一位相当于除2取离。

3,用最有效率的方法算出2乘以8等于多少

使用位运算来实现效率最高。位运算符是对操作数以二进制比特位为单位进行操作和运算,操作数和结果都是整型数。对于位运算符"<<", 是将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,位运算cpu直接支持的,效率最高。所以,2乘以8等于几的最效率的方法是2 << 3。

八,运算符的优先级

单目 > 算术 > 关系 > 逻辑 > 三目(条件) > 赋值

1,实际开发中我们不会写特别复杂的表达式,你要想先算谁就用 ( ) 。

九,运算符总结表

相关推荐
奶香臭豆腐9 分钟前
C++ —— 模板类具体化
开发语言·c++·学习
晚夜微雨问海棠呀16 分钟前
长沙景区数据分析项目实现
开发语言·python·信息可视化
graceyun17 分钟前
C语言初阶习题【9】数9的个数
c语言·开发语言
hanbarger19 分钟前
mybatis框架——缓存,分页
java·spring·mybatis
cdut_suye27 分钟前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
苹果醋339 分钟前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
小蜗牛慢慢爬行40 分钟前
如何在 Spring Boot 微服务中设置和管理多个数据库
java·数据库·spring boot·后端·微服务·架构·hibernate
azhou的代码园43 分钟前
基于JAVA+SpringBoot+Vue的制造装备物联及生产管理ERP系统
java·spring boot·制造
波音彬要多做1 小时前
41 stack类与queue类
开发语言·数据结构·c++·学习·算法
Swift社区1 小时前
Excel 列名称转换问题 Swift 解答
开发语言·excel·swift