当前位置: 首页 > news >正文

[Java基础] 运算符

[Java基础] 基本数据类型

[Java基础] Java HashMap 的数据结构和底层原理

目录

算术运算符

比较运算符

逻辑运算符

位运算符

赋值运算符

其他运算符

常见面试题

Java语言支持哪些类型的运算符?

请解释逻辑运算符&&和&的区别?

请解释条件运算符(?:)的用法?

Java 中的运算符用于执行各种操作,如算术运算、比较运算、逻辑运算、位运算、赋值运算等。下面是对 Java 中一些常用运算符的详细解释,并附上相应的代码片段。

算术运算符

  • 加法 (+): 用于两个数相加。
  • 减法 (-): 用于两个数相减。
  • 乘法 (*): 用于两个数相乘。
  • 除法 (/): 用于两个数相除,结果为浮点数或整数(取决于操作数类型)。
  • 取余 (%): 用于两个数相除后的余数。
  • 自增 (++): 将变量的值增加 1。
  • 自减 (--): 将变量的值减少 1。
public class ArithmeticOperators {  public static void main(String[] args) {  int a = 10;  int b = 5;  System.out.println("a + b = " + (a + b));  System.out.println("a - b = " + (a - b));  System.out.println("a * b = " + (a * b));  System.out.println("a / b = " + (a / b));  System.out.println("a % b = " + (a % b));  a++;  System.out.println("a after a++ = " + a);  a = 10;  --a;  System.out.println("a after --a = " + a);  }  
}

比较运算符

  • 等于 (==): 判断两个值是否相等。
  • 不等于 (!=): 判断两个值是否不相等。
  • 大于 (>): 判断一个值是否大于另一个值。
  • 小于 (<): 判断一个值是否小于另一个值。
  • 大于等于 (>=): 判断一个值是否大于等于另一个值。
  • 小于等于 (<=): 判断一个值是否小于等于另一个值。
public class ComparisonOperators {  public static void main(String[] args) {  int a = 10;  int b = 5;  System.out.println("a == b: " + (a == b));  System.out.println("a != b: " + (a != b));  System.out.println("a > b: " + (a > b));  System.out.println("a < b: " + (a < b));  System.out.println("a >= b: " + (a >= b));  System.out.println("a <= b: " + (a <= b));  }  
}

逻辑运算符

  • 逻辑与 (&&): 当且仅当两个操作数都为 true 时,结果为 true
  • 逻辑或 (||): 当两个操作数中至少有一个为 true 时,结果为 true
  • 逻辑非 (!): 如果操作数为 true,则结果为 false;如果操作数为 false,则结果为 true
public class LogicalOperators {  public static void main(String[] args) {  boolean a = true;  boolean b = false;  System.out.println("a && b: " + (a && b));  System.out.println("a || b: " + (a || b));  System.out.println("!a: " + !a);  }  
}

位运算符

  • 按位与 (&): 对应位都为 1 时结果为 1。
  • 按位或 (|): 对应位有一个为 1 时结果为 1。
  • 按位取反 (~): 对应位为 1 时结果为 0,为 0 时结果为 1。
  • 按位异或 (^): 对应位不同则结果为 1。
  • 左移 (<<): 将二进制位向左移动若干位,右边补 0。
  • 右移 (>>): 将二进制位向右移动若干位,左边补符号位(正数补 0,负数补 1)。
  • 无符号右移 (>>>): 将二进制位向右移动若干位,左边补 0(不考虑符号位)。
public class BitwiseOperators {  public static void main(String[] args) {  int a = 60; // 60 = 0011 1100   int b = 13; // 13 = 0000 1101  System.out.println("a & b = " + (a & b)); // 12 = 0000 1100  System.out.println("a | b = " + (a | b)); // 61 = 0011 1101  System.out.println("~a = " + (~a));       // -61 = 1100 0011  System.out.println("a ^ b = " + (a ^ b)); // 49 = 0011 0001  System.out.println("a << 2 = " + (a << 2)); // 240 = 1111 0000  System.out.println("a >> 2 = " + (a >> 2)); // 15 = 0000 1111  System.out.println("a >>> 2 = " + (a >>> 2)); // 15 = 0000 1111 (无符号右移)  }  
}

赋值运算符

  • 简单赋值 (=): 将右边的值赋给左边的变量。
  • 加法赋值 (+=): 将右边的值加到左边的变量上,并将结果赋值给左边的变量。
  • 减法赋值 (-=): 将左边的变量减去右边的值,并将结果赋值给左边的变量。
  • 乘法赋值 (*=): 将左边的变量乘以右边的值,并将结果赋值给左边的变量。
  • 除法赋值 (/=): 将左边的变量除以右边的值,并将结果赋值给左边的变量。
  • 取余赋值 (%=): 将左边的变量对右边的值取余,并将结果赋值给左边的变量。
public class AssignmentOperators {  public static void main(String[] args) {  int a = 10;  int b = 5;  a += b; // a = a + b  System.out.println("a += b: " + a);  a -= b; // a = a - b  System.out.println("a -= b: " + a);  a *= b; // a = a * b  System.out.println("a *= b: " + a);  a /= b; // a = a / b  System.out.println("a /= b: " + a);  a = 10;  a %= b; // a = a % b  System.out.println("a %= b: " + a);  }  
}

其他运算符

  • 条件运算符 (?:): 也称为三元运算符,用于简化 if-else 语句。
  • 字符串连接运算符 (+): 用于连接两个字符串。
public class OtherOperators {  public static void main(String[] args) {  int a = 10;  int b = 20;  // 条件运算符  String result = (a > b) ? "a is greater" : "b is greater";  System.out.println(result);  // 字符串连接运算符  String str1 = "Hello";  String str2 = "World";  String greeting = str1 + " " + str2;  System.out.println(greeting);  }  
}

常见面试题

Java运算符在面试中是一个常见的考察点,以下是一些可能的Java运算符面试题及解答。

Java语言支持哪些类型的运算符?

Java语言支持的运算符主要包括算术运算符(+、-、*、/、%、++、--)、关系运算符(>、<、>=、<=、==、!=)、逻辑运算符(&&、||、!)、位运算符(&、|、^、~、>>、<<、>>>)、条件运算符(?:)以及赋值运算符(=及其扩展形式如+=、-=等)。

请解释逻辑运算符&&和&的区别?

  • &&:逻辑与运算符,当且仅当两个操作数都为true时,结果才为true。如果第一个操作数为false,则不会计算第二个操作数,即具有短路特性。
  • &:按位与运算符,对两个操作数的每一位进行与运算。无论第一个操作数的结果如何,都会计算第二个操作数。

请解释条件运算符(?:)的用法?

条件运算符(?:)是Java中的唯一三元运算符,其语法为“条件表达式?表达式1:表达式2”。如果条件表达式的结果为true,则计算并返回表达式1的值;否则,计算并返回表达式2的值。

相关文章:

[Java基础] 运算符

[Java基础] 基本数据类型 [Java基础] Java HashMap 的数据结构和底层原理 目录 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 常见面试题 Java语言支持哪些类型的运算符&#xff1f; 请解释逻辑运算符&&和&的区别? 请解释条件运…...

[001-02-018].第05节:数据类型及类型转换

我的后端学习大纲 我的Java学习大纲 1、数据类型介绍&#xff1a; 1.0.计算机存储单位&#xff1a; 1.1.基本数据类型介绍&#xff1a; a.整型&#xff1a;byte、short、int、long 1.整型包括&#xff1a;byte、short、int、long&#xff0c;可如下图方式类比记忆&#xff1…...

Netty基础

Netty基础 一级目录I/O请求基础知识Netty如何实现自己的I/O模型 网络框架的选型 Netty整体架构Netty逻辑处理架构网络通信层事件调度层服务编排层 组件关系梳理Netty源码结构 netty是目前最流行的一款高性能java网络编程框架&#xff0c;广泛使用于中间件、直播、社交、游戏等领…...

602,好友申请二:谁有最多的好友

好友申请二&#xff1a;谁有最多的好友 实现 with tmp as (selectrequester_id idfrom RequestAcceptedunion allselectaccepter_id idfrom RequestAccepted )selectid,count(*) num from tmp group by id order by num desc limit 1;...

【Matlab算法MATLAB实现的音频信号时频分析与可视化(附MATLAB完整代码)

MATLAB实现的音频信号时频分析与可视化 前言正文:时频分析实现原理代码实现代码运行结果图及说明结果图:结果说明:总结前言 音频信号的时频分析是信号处理领域中的一个重要研究方向。它允许我们同时观察信号在时间和频率域的特性,为音频处理、语音识别、音乐分析等应用提供…...

界面耻辱纪念堂--可视元素03

更多的迹象表明&#xff0c;关于在程序里使用新的动态界面元素&#xff0c;微软的态度是不确定的&#xff0c;其中一个是仅仅需要对比一下Office97 里的“Coolbars”和“标准工具条”。Coolbar 按钮直到用户指针通过的时候才成为按钮&#xff08;否则是平的&#xff09;。 工具…...

国产龙芯处理器选择迅为2K1000开发板有资料

硬件配置国产龙芯处理器&#xff0c;双核64位系统&#xff0c;板载2G DDR3内存&#xff0c;流畅运行Busybox、Buildroot、Loognix、QT5.12 系统!接口全板载4路USB HOST、2路千兆以太网、2路UART、2路CAN总线、Mini PCIE、SATA固态盘接口、4G接口、GPS接口WIF1、蓝牙、Mini HDMI…...

MySQL 命令(持续更新)

将 MySQL 命令结果输出到文件中 通过 k8s MySQL pod 里的客户端连接到 MySQL 服务器 kubectl exec mysql-pod -- mysql -hx.x.x.x -uroot -proot -e SELECT * FROM db.table; > result.txt通过 k8s MySQL pod 的客户端连接 MySQL 服务器&#xff0c;直接进入到 MySQL 客户端…...

Linux下Docker方式Jenkins安装和配置

一、下载&安装 Jenkins官方Docker仓库地址&#xff1a;https://hub.docker.com/r/jenkins/jenkins 从官网上可以看到&#xff0c;当前最新的稳定版本是 jenkins/jenkins:lts-jdk17。建议下在新的&#xff0c;后面依赖下不来 所以&#xff0c;我们这里&#xff0c;执行doc…...

低代码框架参考

企业管理信息系统作为一类重要的应用软件系统&#xff0c;具有自己的特点&#xff0c;主要有两个方面&#xff1a; 1. 系统规模大&#xff0c;目前市场上常见的ERP系统一般都有几千个页面。 2. 页面逻辑相似性强。经过比较可以发现&#xff0c;大部分页面具有类似的功能&…...

2024 年 9 月区块链游戏研报:行业回暖,Telegram 游戏引发热潮

作者&#xff1a;Stella L (stellafootprint.network) 数据来源&#xff1a;Footprint Analytics Games Research Page 9 月份&#xff0c;区块链游戏代币的市场总值增长了 29.2%&#xff0c;达到 232 亿美元&#xff0c;日活跃用户&#xff08;DAU&#xff09;数量上升了 1…...

python爬虫登录校验之滑块验证、图形验证码(OCR)

在爬虫过程中&#xff0c;验证码和滑块验证是常见的反爬措施。针对这些挑战&#xff0c;通常采用OCR识别图形验证码和模拟滑块拖动来处理滑块验证。以下是如何处理这两种类型验证的详细方法。 1. 图形验证码&#xff08;OCR&#xff09; a. 使用 tesserocr 和 Pillow 处理图形…...

(一)Python程序结构

1、Python写模块 使用缩进分层来写模块&#xff1b; 2、缩进规范 最好使用同一种缩进方式&#xff0c;统一使用tab或者空格键&#xff1b; 3、换行符&#xff1a;\n&#xff1b; print("窗前明月光\n疑似地上霜") 4、续行符号&#xff1a;\&#xff1b; 注意1…...

二叉树——相同的树

还是应用递归的思想&#xff0c;将这个问题拆分为三个部分&#xff0c;第一&#xff1a;当两棵树均为空树&#xff0c;或者访问到最后的子树时均为空树时&#xff0c;则返回true。第二&#xff1a;当两棵树中其中一棵树为空树&#xff0c;另一棵树不是空树&#xff0c;证明两棵…...

探秘 1688 商品详情接口:高并发批量采集的实战攻略

在进行 1688 商品详情接口批量采集并考虑高并发使用时&#xff0c;你可以从以下几个方面着手&#xff1a; 一、技术选型 选择合适的编程语言和框架&#xff1a;例如 Python 的 Scrapy 框架或者 Java 的 Spring Boot 结合相关爬虫库等&#xff0c;这些工具可以帮助你高效地实现…...

【C语言】sizeof

tmp_buf = (char *)malloc(size)不可以直接使用`sizeof`来查看动态分配内存的大小。在C语言中,`sizeof`操作符是在编译时确定类型或对象的大小,并不能用于动态获取malloc分配的内存大小。 下面解释为什么不能用`sizeof(tmp_buf)`查看动态分配的内存大小: 1. 编译时 vs 运行时…...

2024-10-15 问AI: [AI面试题] 人工智能中使用了哪些不同的搜索算法?

文心一言 人工智能中使用了多种不同的搜索算法来解决问题&#xff0c;这些算法各有特点&#xff0c;适用于不同的场景和问题类型。以下是一些常见的人工智能搜索算法&#xff1a; 深度优先搜索&#xff08;DFS&#xff09;&#xff1a; 是一种基于树或图的搜索算法。核心思想是…...

2024 年 04 月编程语言排行榜,PHP 排名创新低?

编程语言的流行度总是变化莫测&#xff0c;每个月的排行榜都揭示着新的趋势。2024年4月的编程语言排行榜揭示了一个引人关注的现象&#xff1a;PHP的排名再次下滑&#xff0c;创下了历史新低。这种变化对于PHP开发者和整个技术社区来说&#xff0c;意味着什么呢&#xff1f; P…...

Element中el-table组件设置max-height右侧出现空白列的解决方法

之前就出现过这个情况&#xff0c;没理过&#xff0c;因为不影响啥除了不美观...但今天看着实在是难受&#xff0c;怎么都不顺眼(可能是我自己烦躁--) 试了很多网上的方法&#xff0c;都不得行&#xff0c;后面发现了这篇文章&#xff0c;解决了! 感谢&#xff01; Element中t…...

unity学习-全局光照(GI)

在全局光照&#xff08;Lighting&#xff09;界面有两个选项 Realtime Light&#xff08;实时光照&#xff09;&#xff1a;在项目中会提前计算好光照以及阴影的程序&#xff0c;当你需要调用实时全局光照的时候会将程序调用出来使用 Mixed Light&#xff08;烘焙光照&#x…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

aardio 自动识别验证码输入

技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”&#xff0c;于是尝试整合图像识别与网页自动化技术&#xff0c;完成了这套模拟登录流程。核心思路是&#xff1a;截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...

Android Framework预装traceroute执行文件到system/bin下

文章目录 Android SDK中寻找traceroute代码内置traceroute到SDK中traceroute参数说明-I 参数&#xff08;使用 ICMP Echo 请求&#xff09;-T 参数&#xff08;使用 TCP SYN 包&#xff09; 相关文章 Android SDK中寻找traceroute代码 设备使用的是Android 11&#xff0c;在/s…...

二维数组 行列混淆区分 js

二维数组定义 行 row&#xff1a;是“横着的一整行” 列 column&#xff1a;是“竖着的一整列” 在 JavaScript 里访问二维数组 grid[i][j] 表示 第i行第j列的元素 let grid [[1, 2, 3], // 第0行[4, 5, 6], // 第1行[7, 8, 9] // 第2行 ];// grid[i][j] 表示 第i行第j列的…...

篇章一 论坛系统——前置知识

目录 1.软件开发 1.1 软件的生命周期 1.2 面向对象 1.3 CS、BS架构 1.CS架构​编辑 2.BS架构 1.4 软件需求 1.需求分类 2.需求获取 1.5 需求分析 1. 工作内容 1.6 面向对象分析 1.OOA的任务 2.统一建模语言UML 3. 用例模型 3.1 用例图的元素 3.2 建立用例模型 …...

基于django+vue的健身房管理系统-vue

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat12开发软件&#xff1a;PyCharm 系统展示 会员信息管理 员工信息管理 会员卡类型管理 健身项目管理 会员卡管理 摘要 健身房管理…...