学习笔记--Java 运算符
Java 运算符
按照功能划分:
功能 | 运算符 |
---|---|
算术运算符 | + 、- 、* 、/ 、++ 、-- 、% |
关系运算符 | < 、<= 、> 、>= 、== 、!= |
逻辑运算符 | && 、|| 、& 、| 、! |
位运算符 | & 、| 、~ 、^ 、>> 、>>> 、<< |
赋值运算符 | = 、+= 、-= 、*= 、/= 、%= |
字符串连接符 | + |
条件运算符 | ?: |
其他运算符 | instanceof 、new |
算术运算符
关于Java编程中运算符:算术运算符
运算符 | 作用 |
---|---|
+ |
相和 |
- |
相减 |
* |
相乘 |
/ |
相除 |
% |
求余 |
++ |
自减 |
-- |
自增 |
%
是求取余数,又称作【取模】++
可以出现在变量前或后,运算后变量结果会增加1
,有两种使用i++
,++i
i++
:先做赋值运算,再对变量自增++i
:先对变量自增,再做赋值运算
--
与++
相似只不过变减少1
注意:一个表达式当中有多个运算符,运算符有优先级、不确定的加小括号,优先级得到提升。不需要刻意去记忆运算符的优先级。
public class OperatorTest { public static void main(String args[]) { int i = 10; int j = 3; System.out.println(i + j); // 13 System.out.println(i - j); // 7 System.out.println(i * j); // 30 System.out.println(i / j); // 3 整型与整型计算结果还是整型 System.out.println(i % j); // 1 //------------------------------------------------------------- // ++ 出现在变量后 int k1 = 10; int m = k1 ++; System.out.println(k1); // 11 System.out.println(m); // 10 // 先做赋值运算,再对变量自增 // ++ 出现在变量前 int k2 = 10; int n = ++ k2; System.out.println(k2); // 11 System.out.println(n); // 11 // 先对变量自增,再做赋值运算 System.out.println(n); } }
关系运算符
关于Java编程中运算符:关系运算符
运算符 | 作用 |
---|---|
< |
小于 |
> |
大于 |
<= |
小于等于 |
>= |
大于等于 |
== |
等于 |
!= |
不等于 |
- 注意区别:
=
是赋值运算符;==
是关系运算符。 - 关系运算符的结果一定是布尔类型:
true
/false
public class OperatorTest { public static void main(String args[]) { // 关系运算符的结果 System.out.println(10 > 1); // true System.out.println(10 < 1); // false } }
逻辑运算符
关于Java编程中运算符:逻辑运算符
运算符 | 作用 |
---|---|
& |
逻辑与 |
| |
逻辑或 |
! |
逻辑非 |
^ |
逻辑异或 |
&& |
短路与 |
|| |
短路或 |
- 逻辑运算符要求两边的算子都是布尔类型,结果也是布尔类型
&&
和\|\|
与&
和\|
的区别,前者存在短路,短路与和短路或的执行效率更高(使用较多)&&
前面的算子为false
则后面将不会执行\|\|
前面的算子为true
则后面将不会执行
public class OperatorTest { public static void main(String args[]) { System.out.println(5 > 3 & 5 > 2); // true System.out.println(5 > 3 & 5 > 6); // false /* 短路现象 */ int a = 10; // 使用 && System.out.println(false && (a++ > 1)); // false System.out.println(a); // 10 // 使用 & System.out.println(false & (a++ > 1)); // false System.out.println(a); // 11 } }
位运算【略】
- 位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
运算符 | 作用 |
---|---|
& |
如果相对应位都是1,则结果为1,否则为0 |
| |
如果相对应位都是 0,则结果为 0,否则为 1 |
~ |
按位取反运算符翻转操作数的每一位,即0变成1,1变成0 |
^ |
如果相对应位值相同,则结果为0,否则为1 |
>> |
按位右移运算符。左操作数按位右移右操作数指定的位数 |
<< |
按位左移运算符。左操作数按位左移右操作数指定的位数 |
>>> |
按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充 |
赋值运算符
-
赋值类运算符包括两种:
- 基本运算符:
=
简单的赋值运算符,将右操作数的值赋给左侧操作数 - 扩展运算符:
+=
、-=
、*=
、/=
、%=
是对于算术运算符中部分内容的简化
- 基本运算符:
-
赋值类运算符的优先级:先执行等号右边的表达式,在进行赋值给左边的变量
-
扩展运算符不改变运算结果的类型,使用时注意精度损失
public class OperatorTest { public static void main(String[] args) { // 基本的赋值运算符 int i = 10; // 扩展运算符,对比 i = i + 5; // 15 先计算 i + 5 , 在赋值给 i i += 5; // 20 可以理解为 “追加/累加”,效率高于 i = i + 5 //------------------------------------------------------------- // 10 没有超出byte范围,可以直接赋值 byte b = 10; // b = b + 5; 编译错误 /* 编译器只检查语法,不运行程序编译器 编译器发现 b+5 的类型是 int 类型 ,b 变量的类型是 byte , 大容量向小容量转换需要强制类型转换符,所以编译错误 */ b = (byte)(b + 5); // 纠正 byte x = 10; x += 5; // 编译通过,所以 x += 5 不等同于 x = x + 5 System.out.println(x); // 15 byte z = 0; z += 128; // 等同于 z = (byte)(z + 128) System.out.println(x); // -128【精度损失】 } }
字符串连接符
-
关于
+
运算符:- 加法运算,求和
- 字符串连接运算
-
只要
+
运算符两边有一个数据是字符串类型,则是字符串连接运算,运算结果为字符串类型 -
在一个表达式中出现多个
+
,在没有小括号的前提下,从左向右
public class OperatorTest { public static void main(String[] args) { System.out.println(10 + 20 + "30"); // "3030" int a1 = 10; int a2 = 20; // 要求以动态的方式输出 "10 + 20 = 30" System.out.println(a1 + " + " + a2 + " = " + (a1 + a2)); // 10 + 20 = 30 } }
三元运算符
-
?:
的语法:- 布尔表达式 ? 表达式 : 表达式
-
当布尔表达式结果为:
true
执行:
前的表达式false
执行:
后的表达式
public class OperatorTest { public static void main(String[] args) { boolean sex = false; char ch = sex ? '男' : '女'; System.out.println(ch); // '女' sex = true; ch = sex ? '男' : '女'; System.out.println(ch); // '男' } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了