news 2026/10/18 15:11:14

3.java运算符

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3.java运算符

算术运算符

算术运算符是对数值型的变量进行运算的。
常用算术运算符

所以+运算符在java中表示三中含义:正号、加、字符串连接。

++ / % 运算符
publicclassSuanshuYsf{publicstaticvoidmain(String[]args){//除法System.out.println(10/4);//从数学来看是2.5,实际是2doubled1=10/4;// 10 / 4 = 2; d1 = 2.0;System.out.println(d1);//2.0System.out.println(10.0/4);//取模(取余数) java中取模的本质是一个公式://如果被除数<除数,取余就仍然是被除数。 1%3=1 2%5=2 -2%5=-2//如果被除数=除数,结果为0//如果被除数>除数//a % b = a - a / b x b//如果 a 为小数时:a % b = a - (int)a / b x b//如果 a b 为小数时:a % b = a - (int)(a / b) x bSystem.out.println(10%3);// 1System.out.println(-10%3);// -1System.out.println(10%-3);// 1System.out.println(-10%-3);// -1System.out.println(-10.5%3);// -1.5System.out.println(-10.5%-3);// -1.5//++//前++ 后++//作为独立运算时使用 ++i 和 i++ 没有任何区别inti=1;++i;//i = i + 1;System.out.println(i);// 2i++;//i = i + 1;System.out.println(i);// 3//如果作为混合运算时://前++: j = ++i; 先自增,后执行动作//后++: k = i++; 先执行动作(这里的赋值是先给临时变量,然后由临时变量付给变量),后自增。java的编译器在遇到i++和i--的时候会重新为变量运算分配一块内存空间,以存放原始的值,而在完成了赋值运算之后,将这块内存释放掉。//intj=++i;System.out.println("j = "+j+" i ="+i);//j = 4; i = 4;intk=i++;//int tmp = i; i = i + 1; k = tmp;System.out.println("k = "+j+" i ="+i);//k = 4; i = 5;}}

关系运算符(比较运算符)

用于表示一个表达式结果的运算。关系运算符的结果是一个boolean值。true或false

常用关系运算符
inta=6;intb=7;booleanflag=a>b;

逻辑运算符

用于表示多个表达式结果的运算符,结果为一个boolean值。
逻辑运算符要求均为布尔类型。

常用逻辑运算符

分为两组:

  1. 短路与&&, 短路或||, 取反!
  2. 逻辑与&,逻辑或|, 逻辑异或^

    运算规则:
    逻辑异或:当a和b不同是,则结果为true,否则为false;
短路与和逻辑与的区别

&&短路与: 如果第一个条件为false, 后边的条件不在去判断,结果为flase。效率高
&逻辑与: 不管第一个条件是否为false, 都会去判断后边的条件,结果为flase。效率低

inta=5;intb=8;if(a<2&&++b>6){System.out.println("ok");}System.out.println("a = "+a+" b="+b);// b = 8;if(a<2&++b>6){System.out.println("ok");}System.out.println("a = "+a+" b="+b);//b = 9;
短路或和逻辑或

||短路或: 如果第一个条件为true, 后边的条件不在去判断,结果为true。效率高
|逻辑或: 不管第一个条件是否为true, 都会去判断后边的条件,结果为true。效率低

inta=5;intb=8;if(a>2||++b>6){System.out.println("ok");}System.out.println("a = "+a+" b="+b);// b = 8;if(a>2|++b>6){System.out.println("ok");}System.out.println("a = "+a+" b="+b);//b = 9;
取反操作(略)
逻辑异或(略)

赋值运算符

基本赋值运算符int a = 15;
复合赋值运算符a += b;a -= b;a *= b;a /= b;a %= b;
复合复制运算符会进行类型转换

byteb=2;b+=3;//这里有个细节 b = (byte)(b + 3)b++;//b = (byte)(b + 1)

三元运算符

结果 = 布尔表达式?表达式1(true):表达式2(false)

inta=10;intb=99;intresult=a>b?a++:b++;//这里执行 b++时候,是先执行result = b; b = b + 1; 这里的b++并不是独立运算,是赋值运算。

**使用细节:**表达式1 和 表达式2 的类型要和赋值的变量类型一致或可以自动转换
三元运算符本质

intresult=a>b?a++:b++;//本质是一个if else 语句if(a>b){result=a++;}else{result=b++;}

三元运算符可以嵌套使用

intresult=(s>d?c:e)>b?a++:b++;

运算符优先级


上表特点:
上边优先级大于下边
只有单目运算、赋值运算,从右向左。

位运算(一般密码学经常使用)

java 中有7个位运算分为两组(&、|、^、~、>>、<< 和 >>>),位运算是对二进制的操作。
位运算符仅支持整数类型(int、long、char、byte、short)

&、|、^、~
  • 按位与&:
    n = 0 & 0; // 0 n = 0 & 1; // 0 n = 1 & 0; // 0 n = 1 & 1; // 1
  • 按位或|:
    n = 0 | 0; // 0 n = 0 | 1; // 1 n = 1 | 0; // 1 n = 1 | 1; // 1
  • 按位异或^:
    n=0^0;// 0n=0^1;// 1n=1^0;// 1n=1^1;// 0
  • 按位取反~: 0->1, 1->0。作用对象是一个二进制。
    2 & 3 示例:

    ~-2示例:

~2 示例:

>>、<< 和 >>>
  1. 算术右移>>: 低位溢出,符号位不变,并用符号位补溢出的高位。
  2. 算术左移<<: 符号位不变,低位补0。
  3. >>>逻辑右移也叫无符号右移, 规则是:低位溢出,高位补0。它的特点是不管符号位,右移后高位总是补0
  4. 特别说明:没有<<<符号
inta=1>>2;// ... 0000 0001 => ... 0000 0000 本质: 1 / 2 / 2 相当于向右边移动一位,1就除以2intb=1<<2;// ... 0000 0001 => ... 0000 0100 本质: 1 * 2 * 2 相当于向左边移动一位,1就乘以2
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 15:09:48

微信小程序源码二次开发实战:从Mock数据到请求封装

简介&#xff1a;这份源码合集收录了100个微信小程序项目的完整代码&#xff0c;面向初学小程序开发或希望快速参考实战案例的开发者。内容涵盖基础组件、页面生命周期、数据绑定、wx.request网络请求及本地存储等核心知识点&#xff0c;并涉及地图、支付、分享等常见高级功能&…

作者头像 李华
网站建设 2026/10/18 15:08:51

AI辅助论文写作全流程指南:从选题到答辩的10个平台方向

每年到这个时间段&#xff0c;办公室门口总会蹲着一批愁毕业论文的专科生。问的问题翻来覆去就那几个&#xff1a;题目定不下来怎么办、文献看不懂怎么办、写出来的东西像流水账怎么办、查重过不了怎么办。今年被追问得最多的是“AI工具到底怎么用”。说实话&#xff0c;AI辅助…

作者头像 李华
网站建设 2026/10/18 15:06:42

Delphi Berlin 下 Raize 6.1.1.12 DX10.1 安装与避坑指南

简介&#xff1a;Raize 6.1.1.12 DX10.1 Berlin 修正版面向使用 CBuilder 10.1 Berlin 的 Delphi/C 开发者&#xff0c;针对原版组件包中 pas 文件报错导致编译失败的问题做了修复&#xff0c;并已调整好配置文件&#xff0c;解压至 C:\Program Files\Raize\ 后执行 RC6\Source…

作者头像 李华
网站建设 2026/10/18 15:05:05

蛋白质建模 PyRosetta 安装指南:wheel、源码编译与避坑要点

简介&#xff1a;一份面向蛋白质结构预测与分子对接研究者的Pyrosetta安装指南代码包&#xff0c;聚焦在Python环境中顺利部署Rosetta官方Python接口。Pyrosetta本身是Rosetta的Python化封装&#xff0c;使用者无需深入掌握Rosetta底层实现&#xff0c;便可通过脚本完成蛋白质折…

作者头像 李华
网站建设 2026/10/18 15:04:43

KSQL Developer实测:打通Hive、Spark SQL与Impala的多引擎SQL开发体验

做大数据SQL开发的人&#xff0c;一定受够了在命令行或者几个客户端之间来回切换的苦。Hive、Impala、Spark SQL&#xff0c;每换一个引擎就要换一套工具&#xff0c;元数据看不了&#xff0c;格式化一塌糊涂&#xff0c;写个长一点的ETL脚本全靠眼睛硬扛。所以我这次集中测了下…

作者头像 李华
网站建设 2026/10/18 15:03:15

Lumerical Python API:让FDTD仿真自动化与参数扫描更高效

简介&#xff1a;这是一份面向光子学工程师与Python开发者的Lumerical Python API入门源码包&#xff0c;适合需要了解API基本架构、会话管理、数据传递以及Lumopt逆向设计流程的人群&#xff0c;可在光子逆向设计优化任务中作为起步参考。资源以可运行源码为主体&#xff0c;共…

作者头像 李华