首页 > Python资料 博客日记
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
2024-05-15 19:00:05Python资料围观131次
看到这句话的时候证明:此刻你我都在努力~
加油陌生人~
个人主页: Gu Gu Study
专栏:一步一步了解Java
喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹。
如果喜欢能否点个赞支持一下,谢谢啦!
作者:小闭
目录
运算符的作用
在 Java 中,运算符具有以下主要作用:
计算机语言最基本的作用就是进行数学运算
1. 执行运算:如算术运算符(+、-、*、/等)用于进行数学计算。
2. 比较操作:比较运算符(如>、<、>=、<=等)用于比较两个值的大小关系。
3. 逻辑判断:逻辑运算符(&&、||、!等)用于组合和判断条件。
4. 赋值操作:赋值运算符(=)用于将值赋给变量。
5. 其他操作:还有一些特殊的运算符,如位运算符等,用于位操作等。
Java中各种运算符功能
Java 中的运算符可以分为以下几类:
1. 算术运算符:用于执行基本的数学运算,如加法、减法、乘法、除法和取模(取余)等。例如,+ 表示加法运算,- 表示减法运算。
2. 关系运算符:用于比较两个值的关系,如等于、不等于、大于、小于等。关系运算符返回布尔值(true 或 false),用于条件判断。例如,== 表示等于运算,< 表示小于运算。
3. 逻辑运算符:用于执行逻辑运算,如逻辑与、逻辑或和逻辑非等。逻辑运算符通常用于布尔值的操作,它们返回布尔结果。例如,&& 表示逻辑与,|| 表示逻辑或,! 表示逻辑非。
4. 赋值运算符:用于将值赋给变量,如 = 表示赋值运算,+= 表示加并赋值。
5. 自增和自减运算符:用于增加或减少变量的值,例如 ++ 表示自增,-- 表示自减。
6. 位运算符:用于对二进制位进行操作,如位与、位或、位异或、取反等。
7. 三目运算符:用于根据条件选择一个值。
一、算术运算符
基本四则运算符:加减乘除模(+ - * / %)
int a = 20;
int b = 5;
System.out.println(a + b); // 25
System.out.println(a - b); // 15
System.out.println(a * b); // 100
System.out.println(a / b); // 4
System.out.println(a % b); // 0 模运算其实就是数学中除法的余数
注意:
1.1 上面的都是算术运算符二元运算符,使用时必须要有左右两个操作数
1.2 关于类型转变:int / int 结果还是int类型,而且会向下取整
int a = 3;
int b = 2;
// 在数学中应该是1.5 但是在Java中输出结果为1 会向下取整,即小数点之后全部舍弃掉了
System.out.println(a / b);
// 如果要得到数学中的结果,可以使用如下方式
double d = a*1.0 / b;
System.out.println(d);
1.3 取模时%右边的操作数不能为0否则就会报错
public static void main(String[] args) {
int a=3/0;
System.out.println("a = " + a); //a = 1
}
1.4 与C语言不同的是,Java中支持double类型数据进行取模运算
public static void main(String[] args) {
double a=66.6/1.1;
System.out.println("a = " + a);
}
1.5 类型的数据进行运算时类型会转变为类型较大的数据。
public static void main(String[] args) {
System.out.println(66.6/6); //11.1
}
二、赋值运算符(增量,自增运算符)
如下:
+= ,-= ,*=, %=,++,--
2.1 增量运算符
int a = 18;
a += 2; // 相当于 a = a + 2
System.out.println(a); // 输出20
a -= 2; // 相当于 a = a - 2
System.out.println(a); // 输出16
a *= 2; // 相当于 a = a * 2
System.out.println(a); // 输出36
a /= 2; // 相当于 a = a / 2
ystem.out.println(a); // 输出9
如上注释,增量运算符可以有效提高我们敲打吗的速度。
2.2 自增运算符
++为变量的值加1,--则是变量的值减1
但是存在前置和后置的区别,如下为前置++,和后置++的区别代码
int a = 1;
a++; // 后置++ 表示给a的值加1,此时a的值为2
System.out.println(a++); // 注意:后置++是先使用变量原来值,表示式结束时给变量+1,因此输出2
System.out.println(a); // 输出3
++a; // 前置++ 表示给a的值加1
System.out.println(++a); // 注意:前置++是先给变量+1,然后使用变量中的值,因此输出5
System.out.println(a); // 输出5
// --操作符给操作-1,与++含义类似
三、关系运算符
关系运算符主要有六个: ==, !=, <=, > = ,其计算结果是 true 或者 false 。
关系运算符与数学的比较一模一样。
3.1 与C语言不同的是,他们的结果并不是1和0,Java中不能用0和1表示事件的真假。其返回的只有true 或者 false 。
四、逻辑运算符
逻辑运算符主要有三个: && ,|| ,! ,运算结果都是 boolean类型。
4.1 && 运算符 “一个为假则结果为假”
表达式1 表达式2 结果
真 真 真
真 假 假
假 真 假
假 假 假
4.2 || 操作符 “一个为真则结果为真”
表达式1 表达式2 结果
真 真 真
真 假 真
假 真 真
假 假 假
4.3 ! 逻辑非
即把真(true)变为假(false),把假(false变为真(true)。
4.4 短路求值
对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式.
对于 ||, 如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式.
& 和 | 如果表达式结果为 boolean 时, 也表示逻辑运算. 但与 && || 相比, 它们不支持短路求值
如下代码:
System.out.println(18 > 20 && 10 / 0 == 0); // 打印 false
System.out.println(18 < 20 || 10 / 0 == 0); // 打印 true
在这里后面的操作 10/0,并未被计算也就是程序没有出现分母为0的异常警告/
五、位运算符
Java 与C语言数据存储的最小单位是字节,而数据操作的最小单位是比特位. 字节是最小的存储单位,每个字节是由8个二 进制比特位组成的,多个字节组合在一起可以表示各种不同的数据。
位运算符主要有四个: & | ~ ^ ,除 ~ 是一元运算符外,其余都是二元运算符。 位操作表示 按二进制位运算. 计算机中都是使用二进制来表示数据的(01构成的序列), 按位运算就是在按照二进制位 的每一位依次进行计算.
5.1 按位与 &
在计算机中数据的储存都是以0,1的形式进行储存,而按位与 &就可以让两个数据进行运算
进行按位与 & 运算时:如果两个二进制位都是 1, 则结果为 1, 否则结果为 0.
如
public static void main(String[] args) {
int a=10;
int b=3;
System.out.println(a&b); //打印结果为2
}
为什么打印2呢?,首先我们列出两个数的补码。
int a =00000000000000000000000000001010
int b =00000000000000000000000000000011
进行按位与&时:如果两个二进制位都是 1, 则结果为 1, 否则结果为 0.
经过按位与&后得到 :00000000000000000000000000000010
5.2 按位或
在计算机中数据的储存都是以0,1的形式进行储存,而按位或 | 就可以让两个数据进行运算.
进行按位或 | 运算时 :如果两个二进制位都是 0, 则结果为 0, 否则结果为 1.
public static void main(String[] args) {
int a=10;
int b=3;
System.out.println(a|b); //11
}
为什么打印11呢?,首先我们列出两个数的补码。
int a =00000000000000000000000000001010
int b =00000000000000000000000000000011
进行按位或 | 运算时 :如果两个二进制位都是 0, 则结果为 0, 否则结果为 1.
经过按位或| 得到: 00000000000000000000000000001011 即十进制的11
六、移位操作符
移位运算符有三个: << ,>>, >>> ,都是二元运算符,且都是按照二进制比特位来运算的
如:
int a = 10;
System.out.println( a << 1);
// 运行结果20
6.1 <<左移操作符
左移规则:最左侧位不要了, 最右侧补 0.
int a = 10;
System.out.println( a << 1);
// 运行结果20
就像上面的代码,我们先把int a的补码列出来
int a =00000000000000000000000000001010 左移规则:最左侧位不要了, 最右侧补 0.
经过左移1位后得到:00000000000000000000000000010100 即十进制的20
6.2 >>右移操作符
右移规则:最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)
int a = 10;
System.out.println( a >> 1);
// 运行结果5
老样子列出int a的补码:
int a =00000000000000000000000000001010
右移规则:最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)
然后右移一位得到:00000000000000000000000000000101 即十进制的5.
6.3 无符号右移
无符号右移:最右侧位不要了, 最左侧补0
与普通右移不同的就是无符号右移后得到的肯定是一个正数。即使是负数右移
public static void main(String[] args) {
int a = -10;
System.out.println( a >>> 1);
// 运行结果20
}
列出-10的补码:
原码:int a =10000000000000000000000000001010
反码: 11111111111111111111111111111110101
补码: 11111111111111111111111111111110110
无符号右移规则:最右侧位不要了, 最左侧补0
然后右移一位得到:01111111111111111111111111111111011
转化为原码打印即:上面的结果。
七、三目运算符
其形式为:表达式1 ? 表达式2 : 表达式3
当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值;
当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值.
注意:
1. 表达式2和表达式3的结果要是同类型的,除非能发生类型隐式类型转换
public static void main(String[] args) {
int a=10;
double b=12.6;
int c1;
double c2;
c2=a>b?a:b;
c1=a>b?a:b;
}
如图:c2是可以发生转换的,所以可以使用。c1则不行。
2. 表达式不能单独存在,其产生的结果必须要被使用
文章已到末尾,喜欢的话点个赞吧。
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程