JavaSE的运算符
[Top]
算术运算
| 分类 | 运算符 |
|---|---|
| 算数运算符 | * / + - % ++ -- |
| 赋值运算符 | +=, -=, /=, *=, %=(扩展赋值运算符), = |
| 比较(关系)运算符 | == != > <= >= instanceof |
| 逻辑运算符 | & && | || ! ^ |
| 位运算符 | ~ & | >> << >>> |
| 条件运算符 | (条件表达式)? 表达式1:表达式2 |
算数运算符
1.‘+’
- 表示正数
- 进行加法运算(数值+数值,数值+‘字符’,‘字符’+‘字符’)
- 连接作用 (字符串+字符串,字符串+数值......字符串+其他)=字符串
2.‘-’
- 表示负数
- 减法运算(数值-数值,数值-‘字符’,‘字符’-‘字符’)
- 注:字符串没有减法
3.‘*’
4.‘/’
5.‘++’
- ++数值:先++再赋值y=x++ +3;//x+3
- 数值++:先赋值再++y=++x+3;//x+1+3
6.‘--’
7.‘%’
两边为整数
与++同理
赋值运算符 ('=')
- 将等号右边的值赋值给等号左边
下面举一个特殊的例子:
short s = 3;
s=s+2; ①会出错,因为2为int型
s+=2; ②是对的,+2后会进行隐式转换为s对应的数据类型/= ,*=,-=,%=同理


注:两边数据类型必须一致
比较运算符(结果为true与false)
1.'=='
判断两边数值是否相等(基本类型与基本类型),Boolean与Boolean进行比较,String与String进行比较(引用类型与引用类型),
注意 字符串自己不能比较大小,Boolean与Boolean不能比较大小
2.'!='
数值!=数值,bool!=bool,string!=string;
3.'>'和'<'
数值与数值,字符与数值,字符与字符
4.'>='与'<='
与3同理
5.instanceof
判断左边类型是否与右边类型一致
package homeworkday7.chouxiang;
public class Test {
public static void main(String[] args) {
Cuiweiyang dqw=new Dengqinwen();
Cuiweiyang dqw2=new Dengqinwen2();
Person zs = new Person();
dqw.sleep();
dqw2.sleep();
Dengqinwen dqw3=(Dengqinwen) dqw;
zs.feed(dqw3);
}
}
package homeworkday7.chouxiang;
public class Person {
public void feed(Cuiweiyang cuiweiyang){
cuiweiyang.eat();
if(cuiweiyang instanceof Dengqinwen){//判断cuiweiyang是否与Dengqinwen是一个类型
System.out.println("转换为Dengqinwen成功!");
}
}
}

逻辑运算符
1.& 逻辑与
所有表达式结果为true,结果为true ,否则false
特点:当第一个表达式为false时,还会去继续执行第二个式子
2.&& 逻辑与/短路与
所有表达式结果为true,结果为true ,否则false
特点:当第一个结果为false时,不会再继续执行第二个式子
int a=1;
int b=2;
int c=3;
System.out.println(a>b&(b++)>c);
System.out.println(b);
b=2;
System.out.println(a>b&&(b++)>c);
System.out.println(b);
false
3
false
2
3.| 逻辑或
当所有表达式结果为false,结果为false,否则为true
特点:当第一个表达式为true时,还会去继续执行第二个式子
4.|| 逻辑或/短路或
当所有表达式结果为false,结果为false,否则为true
特点:当第一个表达式为true时,不会去继续执行第二个式子
int a=1;
int b=2;
int c=3;
System.out.println(a<b|(b++)>c);
System.out.println(b);
b=2;
System.out.println(a<b||(b++)>c);
System.out.println(b);
true
3
true
2
5.! 逻辑非
!true = false,!false = true;
6.^ 逻辑异或
相同为false 不同为true
条件运算符
(条件表达式)? 表达式 1 : 表达式2
若 条件表达式 为true 去执行表达式 1 ,否则执行表达式 2;
位运算符
1.<< 左移
空位补0,被移除的最高位丢弃,空缺位补0
int a=7;
int b=4;
System.out.println(b<<2);
//0000 0100 4
//0001 0000 16
2.>> 右移
被移位的二进制最高位是0,右移后,空缺位补0,最高位是1,空缺位补1
int b=4;
System.out.println(b>>2);
//0000 0100 4
//0000 0001 1
3.>>> 无符号 右移
被移位二进制最高位无论是0还是1,空缺位都用0补
正数
int b=4;
System.out.println(b>>>2);
//0000 0100 4
//0000 0001 1
负数
int b=-4;
System.out.println(b>>>2);
/*
0111 1111 1111 1111
1111 1111 1111 1100 -4
*/
/*
0011 1111 1111 1111
1111 1111 1111 1110 1073741823
*/
4.& 与
对应两位都为1,则结果为1,否则0
int a=2;
int b=4;
System.out.println(a&b);
/*
0000 0010 2
0000 0100 4 &
0000 0000
*/
5.^ 异或
对应两位都相等,则结果为0,否则1
int a=2;
int b=4;
System.out.println(a^b);
/*
0000 0010 2
0000 0100 4 ^
0000 0110
*/
6.| 或
对应两位都为0,则结果为0,否则1
int a=2;
int b=4;
System.out.println(a|b);
/*
0000 0010 2
0000 0100 4 |
0000 0110
*/
7.~ 非
对所有位取反 1~0 0~1
int a=2;
int b=4;
System.out.println(~a);
/*
~0000 0010 2
1111 1101 -3(最高位为1)
*/
注:使用byte类型移位时,系统会自动换为int进行位运算
JavaSE的运算符的更多相关文章
- JavaSE| 数据类型| 运算符| 进制与补码反码等
JavaSE JavaSE是学习JavaWeb.JavaEE以及Android开发的基础 边听边思考边做“笔记” 不要完全依赖书和视频: 捷径:敲.狂敲: 规范:加注释: 难点,不懂的记录下时间再回头 ...
- javase 基本运算符和三大流程
范围:-(2 ^ 字节 X 8 - 1)~(2 ^ 字节 X 8 - 1)- 1 主要区别是数据大小范围: 1. byte 一个字节 -128 ~ 127 2. short 两个 ...
- 9.JavaSE之运算符
Java语言支持如下运算符operator:优先级() 算数运算符 :+ ,- ,* ,/ ,% ,++ ,-- 赋值运算符 := 关系运算符 :> ,< ,>= ,<= ,= ...
- JavaSE复习~运算符与表达式
运算符 运算符:进行特定操作的符号 表达式:用运算符进行操作的式子 算术运算符 首先是加减乘除:+.-.*./还有取余:% 整数进行算术操作得到的还是整数,例如整数使用 / 得到的是整数(商的整数部分 ...
- [javaSE] 位运算符(&|^)
位运算是直接对二进制进行计算 左移 << 右移 >> 先把整数换成四个8bit 0000-0000 0000-0000 0000-0000 0000-0000 这个二进制左右移 ...
- JavaSE复习日记 : Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符
// Java操作符\关系运算符\逻辑运算符\赋值运算符\字符串连接符\三元运算符 /* * 一 Java操作符 * * Java操作符都有哪些? * +, -, *, /, %, ++, -- * ...
- JavaSE入门学习6:Java基础语法之运算符和语句(上)
继续接着上篇:JavaSE入门学习5:Java基础语法(一)来看Java的基础语法. 五运算符 运算符是一种"功能"符号,用以通知Java进行相关的运算.比方.我们须要将变量age ...
- JavaSE学习笔记(1)---数据类型、运算符、控制结构
javaSE学习笔记(1) 数据类型和运算符 1.注释可以提高程序的可读性.可划分为 单行注释 // 多行注释 /.../ 文档注释 /**...*/ 2.标识符的命名规则: 标识符必须以字母.下划线 ...
- JavaSE学习(二):进制转换—数据类型转换—Java运算符
一.进制转换 1.1 其他进制转十进制(以十六进制为例): 十六进制范围:0-9, A-F对应数字10-15 2A7E(16) = 14*16(0) +7*16(1) + 10*16(2) + ...
- Java 基础入门随笔(3) JavaSE版——逻辑运算符、位运算符
上一节写了一些运算符的注意事项,这节开头依然是对运算符的一些注意点的阐述! 比较运算符除了>.>=.<.<=.==.!=之外需要注意instanceof:检查是否是类的对象,例 ...
随机推荐
- 鸿蒙HarmonyOS实战-ArkUI动画(弹簧曲线动画)
前言 弹簧曲线动画是一种模拟弹簧运动的动画效果,通过改变弹簧的拉伸或压缩来表现不同的运动状态.以下是制作弹簧曲线动画的步骤: 创建一个弹簧的模型,可以使用圆形或者曲线来代表弹簧的形状. 将弹簧固定在一 ...
- Oracle sql 判断全角字符
(lengthb(MC) - length(MC))<>(lengthb(to_single_byte(MC)) - length(to_single_byte(MC)))
- 剑指offer53(Java)-在排序数组中查找数字(简单)
题目: 统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2: 输入: nums = [5,7,7,8,8,1 ...
- 力扣596(MySQL)-超过5名学生的课(简单)
题目: 表: Courses 编写一个SQL查询来报告 至少有5个学生 的所有班级. 以 任意顺序 返回结果表. 查询结果格式如下所示 示例1: 解题思路: 使用group by按 班级 进行分组后 ...
- 力扣577(MySQL)-员工奖金(简单)
题目: 问题:选出所有 bonus < 1000 的员工的 name 及其 bonus.Employee 表单,empId 是这张表单的主关键字 Bonus 表单,empId 是这张表单的主关键 ...
- 阿里云PolarDB开源数据库社区与 Tapdata 联合共建开放数据技术生态
简介:近日,阿里云PolarDB开源数据库社区宣布将与 Tapdata 联合共建开放数据技术生态. 近日,阿里云PolarDB开源数据库社区宣布将与 Tapdata 联合共建开放数据技术生态.在此之 ...
- 有赞 Flink 实时任务资源优化探索与实践
简介: 目前有赞实时计算平台对于 Flink 任务资源优化探索已经走出第一步. 随着 Flink K8s 化以及实时集群迁移完成,有赞越来越多的 Flink 实时任务运行在 K8s 集群上,Flink ...
- Hologres揭秘:深度解析高效率分布式查询引擎
简介: 从阿里集团诞生到云上商业化,随着业务的发展和技术的演进,Hologres也在持续不断优化核心技术竞争力,为了让大家更加了解Hologres,我们计划持续推出Hologers底层技术原理揭秘系列 ...
- ACMMM2021|在多模态训练中融入“知识+图谱”:方法及电商应用实践
简介: 随着人工智能技术的不断发展,知识图谱作为人工智能领域的知识支柱,以其强大的知识表示和推理能力受到学术界和产业界的广泛关注.近年来,知识图谱在语义搜索.问答.知识管理等领域得到了广泛的应用. ...
- 在 Dubbo3.0 上服务治理的实践
简介: Dubbo 3.0 是在云原生背景下诞生的,使用 Dubbo 构建的微服务遵循云原生思想,能更好的复用底层云原生基础设施.贴合云原生微服务架构. Dubbo3.0 介绍 作者 | 十眠 自从 ...