Java中的运算符

2023-11-13

1、算术运算符

基本四则运算符: + - * \ %

(1)规则比较简单,需要注意的是除法:
① int / int 的结果还是 int,要想结果中有小数需要使用 double 类型
0 不能用来做除数

(2)在Java中,% 表示取余,不仅可以对 int 求模,也可以对 double 求模

System.out.println(11.5 % 2.0);
//运行结果 : 1.5

①增量赋值运算符 += 、-=、*=、/=、%=

int a = 10;
a += 1;// 等价于 a = a+1
System.out.println(a);
//运行结果: 11

② 自增/自减 运算符 : ++ - -

int a = 10;
int b = ++a;
System.out.println(b);
int c = a++;
System.out.println(c);
// 运行结果: 11   11 

注意:
1)如果不取自增表达式的返回值,则前置自增后置自增 没区别
2)如果表达式的返回值,则
前置自增 (++a)的返回值是自增之后的值:

int a = 10;
int b = ++a;
return b; // b = 11 , a = 11

后置自增 (a++)的值是自增之前的值:

int a = 10;
int b = a++;
return b; // b = 10 , a = 11

2、关系运算符:

主要有6个: ==、!=、<、>、<=、>=

注意:*
关系运算符的表达式 返回值 都是 boolean 类型

int a = 10; 
int b = 20; 
System.out.println(a == b); 
System.out.println(a != b); 
// 运行结果: false
//            true

3、逻辑运算符:

主要有三个: &&、||、!

注意:*
逻辑运算操作数返回值都是 boolean 类型

(1)逻辑 &&
规则: 两个操作数都为 true , 结果为 true ,否则结果为 false

int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b && b < c);
//运行结果: true 

**如果 左侧表达式值false ,则表达式整体一定为 false ,无需计算右侧表达式

System.out.println(10 > 20 && 20 < 30);
//运行结果: false

(2)逻辑 ||
规则: 两个操作数都为 false, 结果为 false, 否则结果为 true

int a = 10; 
int b = 20; 
int c = 30; 
System.out.println(a < b || a < c);
//运行结果: true

**如果 左侧表达式值true ,则表达式整体一定为 true ,无需计算右侧表达式

System.out.println(10 < 20 || 10 / 0 == 0);
//运行结果: true

(3)逻辑
规则: 操作数为 true, 结果为 false; 操作数为 false, 结果为 true(这是个单目运算符, 只有一个操作数).

int a = 10; 
int b = 20; 
System.out.println(!(a<b));
//运行结果: false

4、位操作符

主要有四个: & 、 | 、 ^ 、~
位操作 表示 按二进制位计算,计算机中都是用二进制来表示数据的(01构成的序列),按位运算就是按二进制的每一位进行计算.

(1)按位 &
如果两个二进制位 全为1,则结果位1, 否则结果为 0

int a = 10;
int b = 20;
System.out.println(a & b);
// 运行结果:  0

先把10 和 20转成二进制 ,分别为 1010 和 10100

在这里插入图片描述
(2)按位 |
如果两个二进制位 都是 0, 则结果为 0, 否则结果为 1.
注意: *
当 & 和 | 的操作数为整数(int, short, long, byte) 的时候, 表示按位运算, 当操作数为 boolean 的时候, 表示逻辑运算.

int a = 10;
int b = 20;
System.out.println(a | b);
// 运行结果:  30

先把10 和 20转成二进制 ,分别为 1010 和 10100
在这里插入图片描述

(3)按位取反 ~
如果该位为 0 则转为 1, 如果该位为 1 则转为 0

int a = 0xf; 
System.out.printf("%x\n", ~a);
//运行结果:  fffffff0
  1. 0x 前缀的数字为 十六进制 数字. 十六进制可以看成是二进制的简化表示方式. 一个十六进制数字对应 4 个二进制位。
  2. 0xf 表示 10 进制的 15, 也就是二进制的 1111
  3. printf 能够格式化输出内容, %x 表示按照十六进制输出
    (4)按位异或 ^
    如果两个数的二进制位相同,则结果为0,相异则为 1
int a = 0xa; 
int b = 0xc; 
System.out.printf("%x\n",a^b);
//运行结果:  6

在这里插入图片描述

5、移位运算:
移位运算符: <<、 >>、 >>>
都是按照二进制来计算
注意:*
输入的是十六进制,输出的也是十六进制
(1)左移 << : 最左侧的不要了,最右边补0

int a = 0x10;
System.out.printf("%x\n",a<<1);
//运行结果:  20

(2)右移 >>:最右侧的不要了,最左边补0(正数补0,负数补1)

int a = 0x10;
System.out.printf("%x\n",a>>1);
//运行结果:  8

(3)无符号右移 >>>: 最右侧位不要了, 最左侧补 0.

int a = 0xffffffff; 
System.out.printf("%x\n", a >>> 1); 
// 运行结果  7fffffff

6、条件运算符:(三目运算符)
表达式1 ? 表达式2 : 表达式3
当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值; 当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值.

int a = 10; 
int b = 20; 
int max = a > b ? a : b;
System.out.println(max);
//运行结果:  20
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中的运算符 的相关文章

随机推荐

  • 鸿蒙关于读取手机文件操作

    1 申请读写权限 先在config json中申请 再使用JAVA代码动态申请 ohos permission READ USER STORAGE和ohos permission WRITE USER STORAGE 2 获取File对象
  • html页面回退 刷新,vue2.0页面前进刷新回退不刷新的实现方法

    这篇文章主要为大家详细介绍了vue2 0页面前进刷新回退不刷新的实现方法 具有一定的参考价值 可以用来参考一下 感兴趣的小伙伴 下面一起跟随512笔记的小编两巴掌来看看吧 花了整整一周时间 尝试过很多种方法 终于找到了最佳的解决方案 对我来
  • 使用分支——Git Checkout

    这篇文章写的挺好 https zhuanlan zhihu com p 465954849 这里要注意 git 新的命令 通过 git switch 切换分支 虽然git checkout 分支 还可以用 游离状态的HEADS 在我们已经见
  • pikachu靶场搭建以及搭建问题

    前言 pikachu是一个适合Web渗透测试学习的小白们进行训练的本地靶场 并且已经在github上开源了 它是一个综合性的靶场 非常适合新手练习 接下来就简单的看一下它如何在Windows上搭建吧 Apache与MySQL环境搭建 然后这
  • 如何判断合法标识符

    题目描述 给出一个标识符 请你判断它是否是C语言合法的标识符 输入 输入一个标识符 长度不超过100 输出 判断是否合法 如果是输出YES 否则输出NO 示例输入 123You 示例输出 NO 提示 C语言规定 标识符只能由字母 数字和下划
  • SSH 和 SSL 加密协议

    SSH和SSL都是加密协议 用于保护网络通信的安全性和完整性 但它们用途和实现方式有所不同 SSH Secure Shell 是一种网络协议 用于远程访问和管理服务器 它提供了加密的连接和认证机制 使得数据传输更加安全 SSH通常用于远程登
  • Linux下使用STM32CUBEMX的makefile,报multiple defination错误的解决办法

    之所以报这个错是因为stm32cubemx生成makefile的一个bug 在C SOURCES部分会重复添加Src 下的c文件 上图是没有修改makefile之前 下图为修改后 要修改的部分
  • pthon代码实现在linux下对siebel服务器换包重启

    siebel服务器的换包重启 需要输入多个命令 而且中间需要等待 经常停了服务忘了启动 之前项目的TA有写过一些shell脚本 启服务的 停服务的 包括自动换包重启的 但是因为里面有个mount目录经常出问题 所以平时也没有使用 最近刚好在
  • css基本语法

    1 background background image url image jpg background color ccf background position center background repeat no repeat
  • 数据库:什么是主键

    数据库主键 主键 表中经常有一个列或列的组合 其值能唯一地标识表中的每一行 通俗叫 一个表中只能有一个主键 不接受空值 能唯一的表示表中的每一行 例如 银行卡的卡号就是主键 不存在重复的情况
  • Java 数据类型转换(Casting)

    Java中 经常可以遇到类型转换的场景 从变量的定义到复制 数值变量的计算到方法的参数传递 基类与派生类间的造型等 随处可见类型转换的身影 Java中的类型转换在Java编码中具有重要的作用 本文主要介绍一下Java 数据类型转换 Cast
  • 华为防火墙默认密码是什么?

    华为默认密码是什么 分享至 小王邀请您加入牛B的IT关键业务推动者社区 点击领取12G的软考 PMP资料包 特训营名额 gt gt 售前工程师系列 教你写解决方案 gt gt ld11235813 荣誉会员 Rank 12Rank 12Ra
  • 华为动态pnat配置

  • 微软宣布IE9正式版发布日期

    微软上月曾透露会在3月14日于美国德克萨斯州奥斯汀市SXSW音乐电影节上举办一个庆祝派对 从那时起就有很多猜想 我们才曾猜测微软届时会正式发布IE9 今天 微软终于不再卖关子 3月14日 也就是下周一 微软将正式发布IE9 微软证实 美国太
  • TensorFlow之双隐含层多层感知器(MLP)

    程序改自上一篇博客 使用了双隐含层 第二层隐含层初始w需要和第一层类似 否则程序正确率一直在0 1左右 修改后的程序正确率也在98 左右 coding utf 8 from tensorflow examples tutorials mni
  • 整理一些windows的bat命令及语法

    ver 在DOS窗口下显示版本信息 winver 弹出一个窗口显示版本信息 内存大小 系统版本 补丁版本 计算机名 format 盘符 FS 类型 格式化磁盘 类型 FAT FAT32 NTFS 例 Format D FS NTFS md
  • python基础系列之元组

    元组应用场景 储存多个数据 但是这些数据不可修改 我们知道列表可以储存多个数据 但是数据可增加 修改 删除 这也是元组和列表不一样的地方 如何定义一个元组 多个数据元组 t1 10 20 30 单个数据元组 t2 10 注意在定义单个数据的
  • 常量表达式函数

    我们可以在函数返回类型前加入关键字constexpr来使其成为常量表达式函数 但并非所有的函数都有资格成为常量表达式函数 事实上 常量表达式函数的要求非常严格 总结如下 函数体只有单一的return返回语句 函数必须返回值 不能是void函
  • 合并排序-递归分治

    按我的想法 简单地说 合并排序的思路就是 先递归 后排序 include
  • Java中的运算符

    1 算术运算符 基本四则运算符 1 规则比较简单 需要注意的是除法 int int 的结果还是 int 要想结果中有小数需要使用 double 类型 0 不能用来做除数 2 在Java中 表示取余 不仅可以对 int 求模 也可以对 dou