java的运算符

整形和浮点型相比,浮点型的范围更大,所以在Java中正常条件下都是整形隐式转换为浮点型(任意整形都可以隐式转换为double或者float),浮点型不能隐式转换为整形。

1.算术运算符

1. 基本四则运算符:加减乘除模(+ - * / %)

加减乘都很简单,就不说了。我们从除和模开始说。

做除法和取模时,右操作数不能为0

除法跟我们在c语言中学的一样。

 

 % 不仅可以对整型取模,也可以对double类型取模,但是没有意义,一般都是对整型取模的。(c语言中%只能作用于整数)

下图是对浮点型进行取模:

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

%对整数进行取模 跟c语言一样。

2. 增量运算符 += -= *= %=

 

跟c语言中用法一样。

只不过这里要说一个点。

int a=3;
a/=1.5;
system.out.println(a)//输出2

 这里有个疑问,右边得到2.0,而要将其赋值给整形,在正常条件下整形是不能隐式转换为浮点型的,如果要输出2则要强制转换。

而我们这里却输出了2,证明对于增量运算符能将其值自动隐式转换赋给左边的值(就算类型大的数据类型隐式转换为类型小的数据类型这种在正常条件下不能发生的事到了自增运算符这就能发生)

所以增量运算符为了赋值成功能实现正常条件下实现不到的隐式转换(类型大转换为类型小)

3.自增/自减运算符 ++ --  

java的这些跟c语言的一样。

这里再说一个有意思的点。

int a=10;
a=a++;
system.out.printfln(a)//输出10

这是在java中会输出10,而在C语言中(vs系统)会输出11,这就是c语言和java的不同。而造成这个现象的原因太深层了,这里就不讲了(作者也不懂。。。),你只要记住这个现象就可以了。

2.关系运算符 

 记住在java中,true和false 跟整形是没关系的不能互相转化,所以连着写时得出来的true或者false不能和整形比较,就会发生错误导致编译失败。

3. 逻辑运算符 

这些都在c语言中讲过。 这里说几点:

1. !不能作用于整形,只能作用于boolean。(这在c语言中行得通在java中行不通) 

2. 对于短路求值在c语言中讲过,java这里多出了一点新东西:

 &和|也可以用作逻辑运算,但因为没有短路求值所以不推荐。

4.位运算符 

位运算符主要有四个: & | ~ ^ ,除 ~ 是一元运算符外,其余都是二元运算符。

位操作表示按二进制位运算. 计算机中都是使用二进制来表示数据的(01构成的序列), 按位运算就是0在按照二进制位的每一位依次进行计算

c语言中已经讲过了这四个位运算符,跟java的基本一样,这里不会再详细讲述 , 看一下下面文案就行。 

 5.移位运算符

移位运算符有三个: << >> >>> ,都是二元运算符,且都是按照二进制比特位来运算的。  

1. 左移 <<   :最左侧位不要了, 最右侧补 0.

2. 右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)

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

这里跟c语言有点像,c语言有逻辑右移和算术右移,但其由编译系统决定,都是>>。

而java巧妙的将其分开了,分为右移>>和无符号右移>>> .  

 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.(不要移位过多导致数据丢失从而算错)

6.条件运算符 

条件运算符只有一个: 表达式1 ? 表达式2 : 表达式3

当表达式1 的值为 true 时, 整个表达式的值为表达式2 的值;

当 表达式1 的值为 false 时, 整个表达式的值为表达式3 的值.

也是Java 中唯一的一个 三目运算符, 是条件判断语句的简化写法.  

 注意事项:

1.表达式2和表达式3的结果要是相同类型的,如果是两个不同类型的,除非两者之间有一个具备能隐式转换变为跟另一个相同类型的条件,否则不能填上去

2.表达式不能单独存在,其产生的结果必须要被使用。否则会发生错误

7.运算符的优先级 

 因为运算符之间是有优先级的. 而我们要记其具体的规则太麻烦了,我们大可不必记住它们.我们可以在可能存在歧义的代码中加上括号也能实现一样的效果.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/434510.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mfc110u.dll丢失的解决方法,5招搞定mfc110u.dll丢失问题

mfc110u.dll是一个动态链接库文件&#xff0c;它是Microsoft Foundation Class&#xff08;MFC&#xff09;库的一部分。MFC是微软公司为Visual C开发人员提供的一个类库&#xff0c;用于简化Windows应用程序的开发过程。mfc110u.dll文件包含了MFC库中的一些功能和类&#xff0…

口碑营销:品牌如何维护良好口碑?

企业的品牌传播最有效的方式莫过用户的口碑&#xff0c;互联网的发展为企业的品牌传播引入了驱动力&#xff0c;愈来愈多的企业花费更多的资源开展网络口碑的建设和维护&#xff0c;那么企业如何维护好网络口碑&#xff1f; 1、持续传递优质的品牌内容 内容是营销推广的支撑点&…

MySQL进阶之(四)InnoDB数据存储结构之行格式

四、InnoDB数据存储结构之行格式 4.1 行格式的语法4.2 COMPACT 行格式4.2.1 记录的额外信息01、变长字段长度列表02、NULL 值列表03、记录头信息 4.2.2 记录的真实数据 4.3 Dynamic 和 Compressed 行格式4.3.1 字段的长度限制4.3.2 行溢出4.3.3 Dynamic 和 Compressed 行格式 4…

贪心 Leetcode 968 监控二叉树

监控二叉树 Leetcode 968 学习记录自代码随想录 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。 要点&#xff1a;1.想到优先覆盖叶子节点&#xff0c…

数字孪生10个技术栈:数据采集的八种方式

大家好&#xff0c;我是贝格前端工场&#xff0c;上期讲了数字孪生10个技术栈&#xff08;总括&#xff09;:概念扫盲和总体介绍&#xff0c;获得了大家的热捧&#xff0c;本期继续分享技术栈&#xff0c;大家如有数字孪生或者数据可视化的需求&#xff0c;可以联络我们。 一、…

企业内部培训考试系统在线考试都用到了哪些防作弊技术?

企业内部培训考试系统在线考试功能采用了多种技术手段来防止作弊行为&#xff0c;确保考试的公平性和有效性&#xff0c;具体如下&#xff1a; 1. 人脸识别验证&#xff1a;在考试开始前&#xff0c;考生需要进行人脸识别核验。系统会根据考生的姓名和身份证号实时采集人脸与公…

AI革命:如何用会话式AI制作爆款短视频

智能制作&#xff1a;会话式AI让短视频内容更上一层楼 随着社交媒体的广泛普及与飞速发展&#xff0c;短视频已成为人们日常生活中不可分割的一环。以其内容简洁、形式多样、易于消费的特性&#xff0c;短视频深受广大用户的青睐。因此&#xff0c;积极投入短视频的制作&#x…

STM32/GD32——I2C通信协议

芯片选型 Ciga Device — GD32F470系列 通讯规则 I2C协议&#xff08;或称IIC&#xff09;是由飞利浦&#xff08;现在的恩智浦半导体&#xff09;公司开发的一种通用的总线协议。它使用两根线&#xff08;时钟线和数据线&#xff09;来传输数据&#xff0c;支持多个设备共享…

C++_布隆过滤器

目录 1、布隆过滤器的用法 2、布隆过滤器的查找 3、布隆过滤器的删除 4、布隆过滤器的实现 结语 前言&#xff1a; 布隆过滤器是一种概率型数据结构&#xff0c;采用的是哈希思想&#xff0c;他在位图的原有基础上做了升级&#xff0c;因为位图处理不了数据为字符串的情…

华为OD机试“HJ5 进制转换”Java编程解答

描述 写出一个程序&#xff0c;接受一个十六进制的数&#xff0c;输出该数值的十进制表示。 数据范围&#xff1a;保证结果在 1≤n≤231−1 输入描述&#xff1a; 输入一个十六进制的数值字符串。 输出描述&#xff1a; 输出该数值的十进制字符串。不同组的测试用例用\…

2024最新外贸建站:WordPress搭建外贸独立站零基础教程

想与外国人做生意有多种方式&#xff0c;一些朋友选择在跨境电商平台上开店如&#xff08;亚马逊&#xff09;&#xff0c;而另一些朋友则决定建立自己的外贸独立站点。本篇教程主要说的是第二种方式如何快速建立自己的外贸独立站&#xff01;通过学习这篇外贸建站教程&#xf…

VSCode安装与使用

1、下载地址&#xff1a;Documentation for Visual Studio Code 在 VS Code 中使用 Python - 知乎 (zhihu.com) 自动补全和智能感知检测、调试和单元测试在Python环境(包括虚拟环境和 conda 环境)之间轻松切换 在 VS Code 中安装插件非常的简单&#xff0c;只需要打开 VS Code…

机器学习-面经(part7、无监督学习)

机器学习面经系列的其他部分如下所示&#xff1a; 机器学习-面经&#xff08;part1&#xff09; 机器学习-面经(part2)-交叉验证、超参数优化、评价指标等内容 机器学习-面经(part3)-正则化、特征工程面试问题与解答合集机器学习-面经(part4)-决策树共5000字的面试问题与解答…

体验Node.js的安装和运行

Node.js概述 Node.js是一个基于Chrome V8引擎的JavaScript运行环境。它允许JavaScript代码在服务器端运行&#xff0c;使得开发人员可以使用同一种语言编写前端和后端的代码。Node.js使用事件驱动、非阻塞I/O模型&#xff0c;使其轻量且高效&#xff0c;非常适合数据密集型的实…

8套成熟在用的三级医院信息化系统源码,HIS、LIS、PACS、智慧导诊、线上预约挂号支付系统源码

8套成熟在用的二级医院、三级医院医院管理系统源码&#xff0c;均有自主知识产权&#xff0c;应用案例&#xff0c;系统稳定运行中。可直接上手项目&#xff0c;支持二次开发 ▶ 一、SaaS模式Java语言开发的云HIS系统源码 在公立二甲医院应用三年&#xff0c;融合B/S版电子病历…

【leetcode C++】电话号码的字母组合

17. 电话号码的字母组合 题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 题目链接 . - 力扣&#xff08;LeetCode&…

java常用数据结构面试题,docker教程学习

前言 JVM对实际简单开发的来说关联的还是不多&#xff0c;一般工作个一两年&#xff08;当然不包括爱学习的及专门做性能优化的什么的&#xff09;&#xff0c;很少有人能很好的去学习及理解什么是JVM&#xff0c;以及弄清楚JVM的工作原理&#xff0c;其实我个人认为这块还是非…

C++学习第七天(string类)

1、学习string的原因&#xff1f; C语言中的字符串 C语言中&#xff0c;字符串是以‘\0’结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;而且底层空间需要用户自己管…

浅析扩散模型与图像生成【应用篇】(七)——Prompt-to-Prpmpt

7. Prompt-to-Prompt Image Editing with Cross Attention Control 本文提出一种利用交叉注意力机制实现文本驱动的图像编辑方法&#xff0c;可以对生成图像中的对象进行替换&#xff0c;整体改变图像的风格&#xff0c;或改变某个词对生成图像的影响程度&#xff0c;如下图所示…

Django 管网项目 三

Django 官网文档 ​​Writing your first Django app, part 2 | Django documentation | Django 本文内容涉及创建视图 View&#xff0c;路由&#xff0c;和模版。并对内容进行渲染。 创建视图 在我们的投票应用中&#xff0c;我们需要下列几个视图&#xff1a; 问题索引页—…