Java基础篇--运算符

目录

算术运算符

赋值运算符

比较运算符

逻辑运算符

条件运算符(?:)

instanceof 运算符

Java运算符优先级

在程序中经常出现一些特殊符号,如+、-、*、=、>等,这些特殊符号称作运算符。运算符用于对数据进行算术运算、赋值运算和比较运算等。在Java中,运算符可分为算术运算符、赋值运算符、比较运算符、逻辑运算符等。

算术运算符

在数学运算中最常见的就是加减乘除,被称作四则运算。Java中的算术运算符就是用来处理四则运算的符号,算术运算符是最简单、最常用的运算符号。

算术运算符在使用时需要注意的问题:

  1. 在进行自增(++)和自减(--)运算时,如果运算符++或--放在操作数的前面,则先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面,则先进行其他运算再进行自增或自减运算。
  2. 在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。如果除法运算有小数参与,得到的结果会是一个小数。例如,2510/1000属于整数之间相除,会忽略小数部分,得到的结果是2,而2.5/10的结果为0.25。
  3. 在进行取模(%)运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。例如,(-5)%3=-2,而5%(-3)=2。

赋值运算符

赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。

赋值运算符使用时的注意事项:

  1. 在Java中可以通过一条赋值语句对多个变量进行赋值,具体示例如下:
    int  x, y, z; 
    x = y = z = 5;	          // 为三个变量同时赋值
    

    在上述代码中,一条赋值语句将变量x,y,z的值同时赋值为5。需要注意的是,下面的这种写法在Java中是不可以的。

    int  x = y = z = 5;		// 这样写是错误的
    
  2. 除了“=”,其他的都是特殊的赋值运算符,以“+=”为例,x += 3就相当于x = x + 3,表达式首先会进行加法运算x+3,再将运算结果赋值给变量x。-=、*=、/=、%=赋值运算符都可以此类推。

比较运算符

比较运算符用于对两个数值或变量进行比较,比较运算结果是一个布尔值,即true或false。

比较运算符使用时的注意事项:

  1. 在比较运算中,不能将比较运算符“==”误写成赋值运算符“=”。

逻辑运算符

逻辑运算符用于对布尔型的数据进行操作,其结果仍是一个布尔值。

使用逻辑运算符需要注意的问题:

  1. 逻辑运算符可以用于操作结果为布尔值的表达式。例如,x > 3 && y != 0表示当x大于3且y不等于0时,整个表达式结果为真(true)。
  2. 运算符&&&都表示逻辑与(AND)操作,它们在功能上是相同的,即只有当两边的操作数都为真时,结果才为真;否则,结果为假。但是它们在使用上存在一定区别。使用&进行与运算时,无论左边为真还是假,右边的表达式都会进行计算。而使用&&进行与运算时,当左边的表达式为假时,右边的表达式不再进行计算,这被称为短路与。
  3. 运算符|||都表示逻辑或(OR)操作。当运算符两边的任意一个表达式值为真时,结果为真;只有当两边表达式的值都为假时,结果才为假。类似于逻辑与操作,||运算符也是短路或。当||的左边表达式为真时,右边的表达式不再进行计算。
  4. 运算符^表示逻辑异或(XOR)操作。当运算符两边的布尔值相同时(都为真或都为假),结果为假;当两边表达式的布尔值不同时,结果为真。异或操作可以用于判断两个表达式的布尔值是否不同。

条件运算符(?:)

条件运算符(?:)是一种在表达式中根据条件的真假选择执行不同操作的运算符。

语法形式如下:

condition ? expression1 : expression2
  • condition 是一个条件表达式,通常是一个逻辑表达式,用于判断条件的真假。
  • 如果 condition 为真(true),则计算并返回 expression1 的值。
  • 如果 condition 为假(false),则计算并返回 expression2 的值。

使用条件运算符可以提供简洁的条件判断和赋值功能。下面是一个示例:

int num = 7;
int result = (num > 5) ? 10 : 20;

在上述示例中,我们首先定义了一个变量 num 并赋值为 7。然后,通过条件运算符判断 num 是否大于 5。如果是,将结果赋值为 10;否则将结果赋值为 20。由于 num 的值为 7,大于 5,因此最终 result 的值将是 10。

需要注意的是,条件运算符的两个表达式 expression1expression2 应该具有相同的类型或存在隐式转换关系,以保证类型兼容性。

instanceof 运算符

instanceof 运算符是用于判断一个对象是否属于某个特定类或其子类的实例。

它的语法形式如下:

object instanceof Class
  • object 是要判断的对象,Class 是要检查的类名。
  • 当使用 instanceof 运算符时,它会检查 object 是否为 Class 类或其子类的实例。如果是,运算符返回 true;如果不是,返回 false。

下面是一个示例:

class Animal {}class Dog extends Animal {}class Cat extends Animal {}Animal animal = new Animal();
Dog dog = new Dog();
Cat cat = new Cat();System.out.println(animal instanceof Animal);  // 输出 true
System.out.println(dog instanceof Animal);     // 输出 true
System.out.println(cat instanceof Animal);     // 输出 true
System.out.println(dog instanceof Dog);        // 输出 true
System.out.println(cat instanceof Dog);        // 输出 false

在上述示例中,定义了一个父类 Animal 和两个子类 Dog 和 Cat。通过使用 instanceof 运算符,我们可以确定对象是否属于某个类或其子类的实例。

Java运算符优先级

在对一些比较复杂的表达式进行运算时,要明确表达式中所有运算符参与运算的先后顺序,通常把这种顺序称作运算符的优先级。

下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

39 printf 的输出到设备层的调试

前言 在前面 printf 的调试 我们只是调试到了 glibc 调用系统调用, 封装了参数 stdout, 带输出的字符缓冲, 以及待输出字符长度 然后内核这边 只是到了 write 的系统调用, 并未向下细看 我们这里 稍微向下 细追一下, 看看 到达设备层面 这里是怎么具体的 impl 的 测试用例…

利用logstash将graylog日志传输到kafka中

1.graylog配置输出 在System-outputs,选择GELF Output,填写如下内容,其它选项默认 在要输出的Stream中,选择Manage Outputs 选择GELF Output,右边选择刚才创建好的test。 2.安装logstash,作为中间临时…

《Java-SE-第三十四章》之Optional

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页:KC老衲爱尼姑的博客主页 博主的github,平常所写代码皆在于此 共勉:talk is cheap, show me the code 作者是爪哇岛的新手,水平很有限&…

C#小轮子:Visual Studio自动编译Sass文件

文章目录 前言插件安装插件使用compilerconfig.jsonsass输入和css输出(自动生成)默认配置(我不懂就不去动他了) 前言 我们知道css文件用起来太麻烦,如果样式一多,嵌套起来用css样式就眼花缭乱。Sass使用层…

Kafka的下载和安装

一、Kafka下载和安装 下载地址:https://kafka.apache.org/downloads 下载完毕解压即可 linux解压命令tar -zxvf kafka_2.13-3.5.1.tgz,linux环境下指令是在\kafka_2.13-3.5.1\bin目录。 windows直接解压即可,windows环境下指令是在kafka_2.…

强化学习-信任区域策略优化和近端策略优化(第7章)

来源书籍: TENSORFLOW REINFORCEMENT LEARNING QUICK START GUIDE 《TensorFlow强化学习快速入门指南-使用Python动手搭建自学习的智能体》 著者:[美]考希克巴拉克里希南(Kaushik Balakrishnan) 译者:赵卫东 出版…

Rust 编程小技巧摘选(7)

目录 Rust 编程小技巧(7) 1. 交换变量 2. 翻转数组 3. for_each() 用法 4. 结构体 Display trait 5. HashMap 和 BTreeMap 6. 遍历输出哈希表 7. 分离奇数和偶数 8. 判断素数(质数) Rust 编程小技巧(7) 1. 交换变量 与python, go等语言用法类…

计算机网络:网络字节序

目录 一、字节序1.字节序概念2.字节序的理解(1)大端模式存储数据(2)小端模式存储数据 二、网络字节序 一、字节序 1.字节序概念 字节序:内存中存储多字节数据的顺序。 难道存储数据还要看顺序吗? yes。内…

【将回声引入信号中】在语音或音频文件中引入混响或简单回声,以研究回声延迟和回波幅度对生成的回波信号感知的影响(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Java 正则表达式【匹配与分组基本原理】

简介 我们一般使用正则表达式是用来处理字符串的,不管是实际的开发中还是我们的算法竞赛中,使用正则表达式绝对可以大大提升我们的效率。 正则表达式(regular expression)其实就是对字符串进行模式匹配的技术。 快速入门 我们这里…

第三篇|金融人数据来源有哪些

数据对于金融行业真的很重要,那么金融人有哪些途径查数据呢? 国内: 1. 国家统计局 这个应该是无论什么行业都使用最频繁的网站,每个月都会固定发上个月资产投资数据 、工业增加值和利润数据等常规数据,其他数据也会…

什么是分布式系统,如何学习分布式系统

正文 虽然本人在前面也写过好几篇分布式系统相关的文章,主要包CAP理论,分布式储存与分布式事务,但对于分布式系统,并没有一个跟清晰的概念。分布式系统涉及到很多的技术、理论与协议,很多人也说,分布式系统…

Docker 安装和架构说明

Docker 并非是一个通用的容器工具,它依赖于已存在并运行的Linux内核环境。 Docker实质上是在已经运行的Liunx下制造了一个隔离的文件环境,因此他的执行效率几乎等同于所部署的linux主机。因此Docker必须部署在Linux内核系统上。如果其他系统想部署Docke…

hutool 导出复杂表头excel

假如已这样的表头导出数据 1.把包含表头的excel添加到项目资源目录 2.编写代码读取表头所在sheet,并且加入需导出的数据 /*** 导出excel*/public static void downloadExcel(List<List<Object>> list, HttpServletResponse response) throws IOException {/*Strin…

wpf 3d 坐标系和基本三角形复习

wpf 3d 坐标系的描述见此&#xff0c; WPF 3d坐标系和基本三角形_wpf 坐标系_bcbobo21cn的博客-CSDN博客 X轴正向向右&#xff0c;Y轴正向向上&#xff1b;Z轴&#xff0c;正向是从屏幕里边出来&#xff0c;负向是往屏幕里边去&#xff1b;坐标原点是在呈现区域的中心&#x…

知识付费系统开发:构建高效智能的付费内容平台

随着数字化时代的来临&#xff0c;知识付费正迅速崭露头角&#xff0c;为知识创作者和求知者带来了全新的商机。在这个背景下&#xff0c;开发一款高效智能的知识付费系统成为了一项重要的任务。本文将深入探讨如何基于Python编程语言和相关技术构建一个智能的知识付费内容平台…

mac arm 通过brew搭建 php+nginx+mysql+xdebug

1.安装nginx brew install nginx //安装brew services start nginx //启动2.安装php brew install php7.4 //安装export PATH"/opt/homebrew/opt/php7.4/bin:$PATH" //加入环境变量 export PATH"/opt/homebrew/opt/php7.4/sbin:$PATH"brew serv…

【百度翻译api】中文自动翻译为英文

欸&#xff0c;最近想做一些nlp的项目&#xff0c;做完了中文的想做做英文的&#xff0c;但是呢&#xff0c;国内爬虫爬取的肯定都是中文 &#xff0c;爬取外网的技术我没有尝试过&#xff0c;没有把握。所以我决定启用翻译&#xff0c;在这期间chatGPT给了我非常多的方法&…

【枚举】CF1660 D

Problem - 1660D - Codeforces 题意&#xff1a; 思路&#xff1a; 思路巨简单&#xff0c;代码也wa了很多发才过&#xff0c;都是因为细节.... 很显然&#xff0c;要根据0分段处理 对于每一段&#xff0c;枚举去掉左边段还是右边段&#xff0c;左边段是 l 到第一个负数&am…

网络加速与文件传输软件:如何通过优化网络提升文件传输速度

在信息化社会&#xff0c;文件传输是人们生活和工作中必不可少的一个环节。但是&#xff0c;由于网络环境的多样性和传输过程中可能出现的各种问题&#xff0c;文件传输速度经常受到影响。因此&#xff0c;如何优化网络以提高文件传输速度成为了一个重要的课题。本文将探讨网络…