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 应该具有相同的类型或存在隐式转换关系,以保证类型兼容性。

使用三元运算符时需要注意以下几点:

  1. 条件运算符 "?" 和 ":" 是一对运算符,不能单独使用,必须作为整个表达式的一部分。
  2. 条件运算符的优先级低于关系运算符和算术运算符,但高于赋值运算符。因此,在一个表达式中,如果有混合使用这些运算符,应注意使用括号明确控制运算的顺序。
  3. 条件运算符支持嵌套,可以在表达式2中再次使用条件运算符。在多层嵌套时,可以根据需要使用括号来明确指定运算的顺序。例如,a > b ? a : c > d ? c : d 应该理解为 a > b ? a : (c > d ? c : d),即第一个条件成立时返回 a,否则判断第二个条件。

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运算符优先级

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

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

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

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

相关文章

SpringBoot MDC全局链路解决方案

需求 在访问量较大的分布式系统中,时时刻刻在打印着巨量的日志,当我们需要排查问题时,需要从巨量的日志信息中找到本次排查内容的日志是相对复杂的,那么,如何才能使日志看起来逻辑清晰呢?如果每一次请求都…

vue elementui v-for 循环el-table-column 第一列数据变到最后一个

这个动态渲染table表格时发现el-table-column 第一列数据变到最后一个 序号被排到后面 代码 修改后 <el-table:data"tableData"tooltip-effect"dark"style"width: 100%"height"500"><template v-for"(item, index) i…

大数据Flink(六十):Flink 数据流和分层 API介绍

文章目录 Flink 数据流和分层 API介绍 一、​​​​​​​​​​​​​​Flink 数据流

【ES】笔记-函数参数默认值

函数参数默认值 ES6 允许给函数参数赋值初始值 1. 形参初始值 具有默认值的参数&#xff0c;一般放到最后 function add(a,b,c10){return abc}let resultadd(1,2);console.log(result);2. 与解构赋值结合 function connect({host"127.0.0.1",username,password,port…

AST入门与实战(三):if节点转switch节点(瑞数5)

原文地址:https://zhuoyue360.com/jsnx/110.html 1. 期望 这是一个瑞数5代解混淆的案例&#xff0c;我们本章节需要做的是把if节点的内容转换成switch-case内容.以此来熟悉AST对JS混淆的对抗. 原始代码: function whileState() {while (1) {aV cA[wU];if (aV < 4) {if (…

前端笔试题1

HTML/CSS 题1&#xff1a; 1&#xff0e;使用CSS 让该节点不可见&#xff0c;方法越多越好。 <div class"hidden">Hi</div> 使用CSS 让节点不可见的方法有以下几种&#xff1a; 把 visibility 属性设置为 hidden&#xff0c;这样元素框不会被绘制&…

nodejs+vue+elementui学生档案信息管理系统_06bg9

利用计算机网络的便利&#xff0c;开发一套基于nodejs的大学生信息管理系统&#xff0c;将会给人们的生活带来更多的便利&#xff0c;而且在经济效益上&#xff0c;也会有很大的便利!这可以节省大量的时间和金钱。学生信息管理系统是学校不可缺少的一个环节&#xff0c;其内容直…

公司自建机房IDC还是选择云服务器?以腾讯云为例

大企业是选择自购服务器自建机房还是使用腾讯云服务器&#xff1f;都说企业上云是趋势&#xff0c;自建机房是一次性支出&#xff0c;上云租赁云服务器等产品需要年年续费&#xff0c;大型企业有必要把数据中心迁移上云吗&#xff1f;腾讯云服务器网想说&#xff0c;自建机房购…

面试八股文Mysql:(2)数据库调优

1. SQL优化很有必要 数据库优化在提升系统性能是很重要的一个方面&#xff0c;不管是MySQL还是MongoDB还是其它的数据库。 SQL优化在提升系统性能中是成本最低 && 优化效果最明显的途径&#xff0c;可以让吞吐量更大&#xff0c;响应速度更快。如果你的团队在SQL优化这…

安防监控视频汇聚平台EasyCVR分发的FLV视频流在VLC中无法播放是什么原因?

众所周知&#xff0c;TSINGSEE青犀视频汇聚平台EasyCVR可支持多协议方式接入&#xff0c;包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。在视频流的处理与分发上&#xff0c;视频监控…

集合数据类型

非数字型 列表[]&#xff08;其他语言叫数组&#xff09; 注意点&#xff1a;第一个成员的索引编号为0&#xff0c;不能访问不存在的索引编号 # list是列表变量名&#xff0c;列表中有三个成员 list[刘备,曹操,关羽] print(list[0]) print(list[1]) print(list[2]) print(li…

XXLJOB 怎么用

目录 1、数据库执行sql语句&#xff0c;建立表 2、配置Admin &#xff0c;连接xxl_job数据库 3、启动admin&#xff0c;访问 http://localhost:8080/xxl-job-admin 4、需要定时任务的微服务里导入依赖 5、配置yml&#xff08;admin地址&#xff0c;执行器名字 端口&#x…

湘大 XTU OJ 1260 Completed String 题解(非常详细):建立数组下标和数组元素之间的映射关系 ~scanf

一、链接 1260 Completed String 二、题目 题目描述 给一个字符串&#xff0c;请判断字符串是否出现了所有的英文字母&#xff08;不区分大小写&#xff09;。 输入 每行一个只含英文字母的字符串&#xff0c;长度不超过1000。 输出 每行输出一个样例的结果&#xff0c…

Vue.js2+Cesium1.103.0 七、Primitive 绘制航线元素

Vue.js2Cesium1.103.0 七、Primitive 绘制航线元素 用 Primitive 绘制航线元素&#xff0c;包括航点图标&#xff0c;航线线段&#xff0c;线段距离标注&#xff0c;航点序号&#xff0c;海拔标注&#xff0c;总航程等信息。 可同时绘制多条航线&#xff1b;可根据 id 清除指…

基于Vue+wangeditor实现富文本编辑

目录 前言分析实现具体解决的问题有具体代码实现如下效果图总结前言 一个网站需要富文本编辑器功能的原因有很多,以下是一些常见的原因: 方便用户编辑内容:富文本编辑器提供了类似于Office Word的编辑功能,使得那些不太懂HTML的用户也能够方便地编辑网站内容。提高用户体验…

【C++】虚继承(virtual base classes)

【C】虚继承&#xff08;virtual base classes) 文章目录 【C】虚继承&#xff08;virtual base classes)1. 使用原因2. 解决方法3. 例题练习 1. 使用原因 在多重继承(Multiple Inheritance) 的情况下&#xff0c;尤其是菱形继承时&#xff0c;容易出现问题&#xff0c;关于菱…

SpringSecurity 详解(通俗易懂)

SpringSecurity 详解 1、SpringSecurity讲解1.1、SpringSecurity完整流程1.2、认证流程 2、登录&#xff0c;退出&#xff0c;注册_分析说明2.1、登录2.2、校验2.3、退出2.4、注册2.5、SecurityContextHolder说明 3、代码实现3.1、引入依赖3.2、登录 退出 注册3.2.1、SpringSec…

Xcode 基座打包

Xcode基座打包-APP更新版本内容无效 问题&#xff1a;解决&#xff1a; 问题&#xff1a; 使用xcode基座打包之后&#xff0c;上传到appstore进行提审发布。 用户在appstore商城进行更新下载&#xff0c;打开更新后的APP发现版本号是最新的&#xff0c;APP里面的其他内容还是上…

HTML5基础

1、HTML5概述 2014年10月28日&#xff0c;W3C&#xff08;world wide web consortium&#xff0c;万维网联盟&#xff09;的HTML工作组发布了HTML5的正式推荐标准。HTML5作为构建开放Web平台的核心&#xff0c;增加了支持Web应用的许多新特性&#xff0c;以及更符合开发者使用…

Arcgis地图实战二:地图实时轨迹展示

1.最终效果预览 2.定时器执行方法 进入页面执行执行器 this.locationInterval setInterval(() > {this.getCurrentPosition();}, this.conf.LocateInterval);离开页面销毁 clearInterval(this.locationInterval);this.conf.LocateInterval为获取的数据同步中的定时器间隔…