【笔记】Java的运算符(赋值运算符号、一元运算符、算术运算符、关系运算符、自增与自减运算符、逻辑运算符、括号运算符、位运算符、三元(三目)运算符)、表达式与语句:简洁表达式
文章目录
- 一、运算符
- 1.赋值运算符号
- 2.一元运算符
- 3.算术运算符
- 4.关系运算符
- 5.自增与自减运算符
- 6.逻辑运算符
- 7.括号运算符
- 8.位运算符
- 左移位:
- 右移位:
- 9.三元(三目)运算符
- 二、表达式与语句
- 1.简洁表达式
一、运算符
运算符定义:对常量和变量尽相运算操作的符号。
(图片来源于B站网课截图)
每类运算符只罗列了其中一些。下面我们来详细介绍各类运算符。
1.赋值运算符号
即用于给变量赋值的运算符
扩展赋值运算符的好处:省略了强制类型转换的操作。
2.一元运算符
大多数的表达式,运算符前后都会有操作数。但是有一种运算符比较特别,它只需要一个操作数,称为一元运算符。如下面的几个语句:
+3; //表示正3
b = -a; //表示负a的值赋值给变量b存放
!a; //a的NOT运算,若a为0,则!a为1,若a不为0,则!a为0
3.算术运算符
例:算术运算符的使用
import javax.sound.midi.Soundbank;public class DataDemo02 {public static void main(String[] args) {int i =10;int j = 3;System.out.println(i+"+"+j+"="+(i + j));System.out.println(i+"-"+j+"="+(i - j));System.out.println(i+"*"+j+"="+(i * j));System.out.println(i+"/"+j+"="+(i / j));System.out.println(i+"%"+j+"="+(i % j));}
}
输出结果:
我们用求模运算来编写一个判断奇偶数的程序(结合if语句)
例:判断某一个数字是奇数还是偶数
import javax.sound.midi.Soundbank;public class DataDemo02 {public static void main(String args[]) {int num = 10;if(num % 2 == 0){System.out.println(num + "是偶数");}else{System.out.println(num + "是奇数");}}}
输出结果:
总结:
4.关系运算符
定义:关系运算符是用来描述两个变量值之间关系的
关系运算符的运算结果都是布尔类型的,只能是true或false
例:关系运算符的应用
public class DataDemo02 {public static void main(String[] args) {int a = 10;int b = 20;int c = 10;//==System.out.println(a == b);System.out.println(a == c);System.out.println("-----------------");//!=System.out.println(a != b);System.out.println(a != c);System.out.println("-----------------");//<=System.out.println(a <= b);System.out.println(a <= c);System.out.println("-----------------");//>=System.out.println(a >= b);System.out.println(a >= c);System.out.println("-----------------");}
}
输出结果:
5.自增与自减运算符
例:自增自减运算符的使用
单独使用
a++
public class DataDemo02 {public static void main(String[] args) {//定义一个int类型的变量int a = 5;//单独使用a++;System.out.println("a: " + a);}
}
++a
public class DataDemo02 {public static void main(String[] args) {//定义一个int类型的变量int a = 5;//单独使用++a;System.out.println("a: " + a);}
}
输出结果:
输出结果都是6。因此自增自减运算符在单独使用的时候,放在变量前或后结果都一样
参与运算
a++
public class DataDemo02 {public static void main(String[] args) {//定义一个int类型的变量int a = 5;//参与运算int b = a++;System.out.println("a: " + a);System.out.println("b: " + b);}
}
输出结果:
++a
public class DataDemo02 {public static void main(String[] args) {//定义一个int类型的变量int a = 5;//参与运算int b = ++ a;System.out.println("a: " + a);System.out.println("b: " + b);}
}
输出结果:
从两个输出结果,可以看出自增自减运算符在参与运算时:
运算符在变量前,先自增自减,再进行其他运算
运算符在变量后,先以原值进行运算,再自增自减
6.逻辑运算符
定义:
常见的逻辑运算符:
序号 | 逻辑运算符 | 描述 |
---|---|---|
1 | & | AND,与 |
2 | && | 短路与 |
3 | | | OR,或 |
4 | || | 短路或 |
public class DataDemo02 {public static void main(String[] args) {boolean a = true;boolean b = false;System.out.println("a || b = "+(a||b));System.out.println("a | b = "+(a|b));System.out.println("a && b = "+(a&&b));System.out.println("a & b = "+(a&b));}
}
输出结果:
为什么会有两种与和或操作?
答:与分为短路与和非短路与,或分为短路或和非短路或
有一个规律是这样的:
1.对于与操作来说,如果第一个条件为假,则后面不管是真是假,最终结果都是假。
2.对于或操作来说,如果第一个条件为真,则后面不管是真是假,最终结果都是真。
也就是说对于与和或 ,第一个条件都是一个关键性的条件,所以在Java中设置了短路与和短路或,对于短路与和与,短路或和或有两个区别:
(1)对于与来说,要求所有的条件都判断,使用短路与如果第一个条件为false,则后面的条件将不再判断。
(2)对于或来说,要求所有的条件都判断,使用短路或如果第一个条件为true,则后面的条件将不再判断。
7.括号运算符
括号运算符用来处理表达式的优先级,括号运算符能够改变运算顺序。
8.位运算符
在Java中除了具备高级语言的特点之外,也支持位运算操作。位运算操作就是指进行二进制位的运算。
在Java中支持的位操作符如表所示:
序号 | 逻辑运算符 | 描述 |
---|---|---|
1 | & | 按位与 |
2 | | | 按位或 |
3 | ^ | 异或(相同为0,不同为1) |
4 | ~ | 取反 |
5 | << | 左移位 |
6 | >> | 右移位 |
7 | >>> | 无符号右移位 |
在Java中所有的数据都是以二进制数据的形式进行运算的,即如果是一个int型变量,要采用位运算的时候则必须将其变为二进制数据。
每一位二进制进行与、或、异或操作的结果如表所示:
序号 | 二进制数1 | 二进制数2 | 与操作(&) | 或操作(|) | 异或操作 |
---|---|---|---|---|---|
1 | 0 | 0 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 1 | 1 |
3 | 1 | 0 | 0 | 1 | 1 |
4 | 1 | 1 | 0 | 1 | 0 |
例:位运算的应用:假设有3和6两个数字进行与、或、异或的操作。
public class TestDemo02 {public static void main(String[] args) {int x = 3; //3的二进制数据:00000000 00000000 00000000 00000011int y = 6; //6的二进制数据:00000000 00000000 00000000 00000110System.out.println(x & y); //与操作的结果:00000000 00000000 00000000 00000010System.out.println(x | y); //或操作的结果:00000000 00000000 00000000 00000111System.out.println(x ^ y); //异或操作的结果:00000000 00000000 00000000 00000101}
}
输出结果:
解读:在Java中整型数据的长度为32位,所以在前面要补30个0。
根据前面那个表格“位运算的结果表”,进行运算,最后输出的时候输出十进制数。
在计算机的数据表示中只定义了正数的表示形式,并没有定义负数的表示形式,所以一般都是利用补码的形式表示(负数)的。
正数的原码、反码、补码都相同
负数的反码是除符号位为1外,其它位全取反;补码就是“反码+1”
例:求出负数的反码
public class TestDemo02 {public static void main(String[] args) {int x = -3;System.out.println(x + "的反码是:"+ ~x);}
}
输出结果:
小声逼逼一句,这里我真的没理解,但是我摸着规律了,以后有空就再想想(负数的的十进制数要和自己的的反码十进制数相加和为-1)。
在Java中也提供过了左移“<<” 和 右移“>>” 两种操作。
左移操作是将运算数的二进制码整体左移指定位数,左移之后的空位使用0来填充。
左移位:
例:对3进行左移2位操作
public class TestDemo02 {public static void main(String[] args) {int x = 3;System.out.println(x + "左移2位之后的内容是:"+ (x << 2));}
}
输出结果:
右移位:
右移操作“>>” 是将运算数的二进制码整体右移,右移后空出来的位置以符号位填充。如果是整数使用 “0” 填充,如果是负数使用 “1” 填充。
例:右移操作
public class TestDemo02 {public static void main(String[] args) {int x = 3;int y = -3;System.out.println(x + "右移2位之后的内容是:"+ (x >> 2));System.out.println(y + "右移2位之后的内容是:"+ (y >> 2));}
}
输出结果:
计算的时候负数采用补码的形式保存。
以上的右移操作属于带符号位的右移操作,在Java中也提供了无符号的右移操作符“>>>”,使用此操作将以0填充空出来的位。
例:无符号右移
public class TestDemo02 {public static void main(String[] args) {int x = 3;int y = -3;System.out.println(x + "右移2位之后的内容是:"+ (x >>> 2));System.out.println(y + "右移2位之后的内容是:"+ (y >>> 2));}
}
输出结果:
对于位操作只适合于byte、short、int、char、long类型,而且位操作后原始的操作内容并不会发生任何的改变。
9.三元(三目)运算符
格式:
例:三目运算符的应用
public class DataDemo02 {public static void main(String[] args) {int a = 10;int b = 20;int max = (a >= b) ? a : b;System.out.println("max = "+max);}
}
输出结果:
总结:
二、表达式与语句
表达式:用运算符把常量或变量连接起来的式子。
表达式的类型:表达式的类型为表达式运算结果的数据类型。
例如:
整型表达式: 1+2 10*20
布尔表达式: 2>1 (20-10)<15
1.简洁表达式
略,以后再补充
【笔记】Java的运算符(赋值运算符号、一元运算符、算术运算符、关系运算符、自增与自减运算符、逻辑运算符、括号运算符、位运算符、三元(三目)运算符)、表达式与语句:简洁表达式相关推荐
- Java官方教程(三-2)赋值 运算和一元运算符(2020.12.19)
前言 本文是橙子出于兴趣爱好对Java官方教程的尝试翻译,几乎每日更新,感兴趣的朋友可以关注一下橙子:翻译过程中尽可能多的对一些关键词保留了英文原文,如果你想看最纯正的英文原版教材却又看不懂,可以试着 ...
- java 位运算符赋值_java-运算符(算术、赋值 =、关系、逻辑、三元、位运算符)...
基本运算符与位运算符 算术运算符:两个操作数进行计算 + 加 - 减 * 乘 / 除(取整) % 取余 例子: class ArrayTest{ public static void main(Str ...
- java中的算数运算符号用法与原理分析
一.表达式求值简单说明: 1.求值表达式主要包括加减乘除四种基本运算,其实表达式可以看做由一个个二元运算构成,前一个二元运算的结果作为后一个二元运算的输入. 举个例子: "1+2-4=&qu ...
- C++学习笔记-----在重载的赋值运算函数中调用拷贝构造函数
类的拷贝构造函数与赋值运算不同,拷贝构造函数是对这个类进行初始化的过程,而赋值是删除原有的东西,赋予它新的东西. 但是二者在实现上是互通的. template<class T> graph ...
- c 语言运算符号大全,c语言关系运算符号有哪些?
c语言关系运算符号有".>=.==.!=".关系运算符都是双目运算符,其的作用是判明这两个表达式的大小关系:关系运算符的优先级低于算术运算符,高于赋值运算符:其运算结果只有0 ...
- C++ Primer 5th笔记(chap 14 重载运算和类型转换)算术和关系运算符
运算符 双目算术运算符 + (加),-(减),*(乘),/(除),% (取模) 关系运算符 ==(等于),!= (不等于),< (小于),> (大于>,<=(小于等于),> ...
- Java中的~运算符号
最近做的笔试题中出现这样一道题: 题目:What results from the following code fragment?int i = 5;int j = 10;System.out.pr ...
- java 复合赋值运算顺序非纯粹的从右到左
在研究编程语言的过程中,发现 Java在运算下列代码所得到的 a 的值,与C/C++下运算的值是有区别的: int a = 5; a += a += 666; System.out.println(a ...
- 编程优先级c语言,C语言中运算符号的优先级
C语言中运算符号的优先级 发布时间:2020-06-20 16:13:39 来源:亿速云 阅读:117 作者:Leah 这期内容当中小编将会给大家带来有关C语言中运算符号的优先级,以专业的角度为大家分 ...
- java类用三木运算编译不生效_Java 中的三目运算符使用不当所导致的问题
Java 中的三目运算符使用不当所导致的问题 写在前面: 1.三目运算符是我们经常在代码中使用的,a= (b==null?0:1); 这样一行代 码可以代替一个 if-else,可以使代码变得清爽易读 ...
最新文章
- C#中IList与List区别
- 如何找GitHub上热门的开源项目
- 透过汇编另眼看世界之DLL导出函数调用
- python哲学翻译_Python
- cad求和插件_黑科技 | 无BIM建模下平面CAD自动生成门窗表
- 对爬虫数据分析的同学不要错过啦 数据分析数据可视化: Matplotlib
- 使用Thrift让Python为Java提供服务
- java 二进制转十进制的算法_java中位运算与整数的十进制转二进制
- wpsppt流程图联系效果_wps幻灯片怎么制作流程图
- element 表格 序号依次递增
- 与锤子手机HR的对话——创业没有联合创始人,CTO 等高管会把它当做自己的事业吗?...
- 无线信道仿真 matlab,基于Matlab的无线信道仿真.doc
- 数据库系统期末总结(一)(往届试卷2018A卷、C卷、E卷选择题)
- Exception in thread main java.sql.SQLException: Access denied for user ''@'localhost' (using passw
- 高级程序员之抽象能力模型
- cesium-加载3dTiles
- IT搬砖员如何认识能力圈并如何突破自我
- Grafana入门使用
- 流形上从环境空间到隐层空间是压缩的一个过程,香农极限是否是流形表示的另一个方面?
- 如何让淘宝客推广我们的产品?
热门文章
- iPhone 13如何显示电量百分比?详细教程
- 机智云物联网技术科普:一文看懂LoRa物联网!
- java unsafe park_在sun.misc.Unsafe.park(本机方法)中等待
- 服务器定位cpu高占用率代码php,面试官:线上服务器CPU占用率高如何排查定位问题?,...
- ROS:rosdep init 安装问题解决方案-转载
- MDN要点记录--CSS
- 美版饿了么上市:美国外卖行业为何落后?有哪些挑战和机遇?
- 背景差分运动目标检测
- 「端到端」和「点到点」的联系及区别
- 三种登录形式的实现—永久登录、每次进入页面登录、设置登录有效期