Java基础入门篇——Java变量类型的转换和运算符(七)
目录
一、变量类型
1.1自动类型转换(隐式转换)
1.2 强制类型转换(显式转换)
1.3类型转换的其他情况
二、运算符
2.1算术运算符
2.2比较运算符
2.3逻辑运算符
2.4位运算符
三、总结
在Java中,变量类型的转换可以分为两种:自动类型转换(隐式转换)和强制类型转换(显式转换)。
一、变量类型
1.1自动类型转换(隐式转换)
当两种不同的数据类型在一个表达式中一起使用时,Java会自动将其中一个类型转换为另一个类型,以确保数据不会丢失。这种转换通常发生在小的数据类型向大的数据类型转换的情况下。
规则:

示例:
int i = 10;
double d = i; // i被自动转换为double类型
1.2 强制类型转换(显式转换)
当你需要将一个大的数据类型转换为一个小的数据类型时,或者在其他不支持自动类型转换的情况下,你需要使用强制类型转换。
这是通过将目标类型放在括号中并放在要转换的变量前面来实现的。
示例:
double d = 10.5;
int i = (int) d; // d被强制转换为int类型,小数部分被丢弃
注意:
- 强制类型转换可能会导致数据丢失或不精确的结果。
- 当将浮点数转换为整数时,小数部分将被丢弃。
- 当将一个超出目标类型范围的值转换为该类型时,结果可能是不确定的。
1.3类型转换的其他情况
包装类:
Java为每个基本数据类型提供了一个对应的包装类,如Integer为int、Double为double等。你可以使用这些包装类的方法来进行类型转换,例如Integer.parseInt("123")将字符串转换为整数。
字符串转换:
几乎所有的数据类型都可以通过toString()方法或String.valueOf()方法转换为字符串。
总的来说,当进行类型转换时,应该始终注意可能的数据丢失或不精确的结果,并确保转换是安全的。
二、运算符
2.1算术运算符
与算术相关运算符+、-、*、/,就是加减乘除,也被成为四则运算。另外还有一个%称为模数运算符或余数运算符。算术运算符使用上和学过的加减乘除一样,先乘除后加减。

在Java中,算术运算符用于执行基本的数学运算。以下是Java中的主要算术运算符:
1、加法 (+):将两个操作数相加。
int sum = 5 + 3; // 结果是8
2、减法 (-):从左操作数中减去右操作数。
int difference = 5 - 3; // 结果是2
3、乘法 (*):将两个操作数相乘。
int product = 5 * 3; // 结果是15
4、除法 (/):左操作数除以右操作数。如果两个操作数都是整数,结果也是整数,小数部分会被丢弃。
int quotient = 7 / 3; // 结果是2
double result = 7.0 / 3; // 结果是2.3333...
5、取模 (或取余) (%):返回左操作数除以右操作数的余数。
int remainder = 7 % 3; // 结果是1
6、自增 (++):增加操作数的值。可以前置或后置。
int a = 5;
a++; // a的值现在是6
7、自减 (--):减少操作数的值。可以前置或后置。
int b = 5;
b--; // b的值现在是4
注意:
- 当使用整数进行除法运算时,结果将是整数,小数部分会被丢弃。要获得浮点结果,至少有一个操作数应该是浮点数。
- 自增和自减运算符可以前置或后置,它们在某些情况下的行为是不同的。例如,
a++与++a在单独使用时效果相同,但在表达式中使用时会有所不同。
总的来说,算术运算符在Java中提供了执行基本数学运算的功能,它们是编程中最常用的运算符之一。
2.2比较运算符
比较运算符用于比较两个值。这些运算符返回一个布尔值,即true或false,取决于比较的结果。

以下是Java中的主要比较运算符:
1、等于 (==):检查两个操作数是否相等。
int a = 5;
boolean result = (a == 5); // 结果是true
2、不等于 (!=):检查两个操作数是否不相等。
int b = 6;
boolean result = (b != 5); // 结果是true
3、大于 (>):检查左操作数是否大于右操作数。
int c = 7;
boolean result = (c > 5); // 结果是true
4、小于 (<):检查左操作数是否小于右操作数。
int d = 4;
boolean result = (d < 5); // 结果是true
5、大于或等于 (>=):检查左操作数是否大于或等于右操作数。
int e = 5;
boolean result = (e >= 5); // 结果是true
6、小于或等于 (<=):检查左操作数是否小于或等于右操作数。
int f = 4;
boolean result = (f <= 5); // 结果是true
注意:
- 使用
==运算符比较对象引用时,它检查两个引用是否指向内存中的同一个对象,而不是检查对象的内容是否相等。要检查两个对象的内容是否相等,通常使用对象的equals()方法。
2.3逻辑运算符
逻辑运算符用于基于一个或多个布尔表达式的值来返回一个布尔结果(true或false)。

例如:
1、逻辑与 (&&):当且仅当两个操作数都为true时返回true。
boolean result = (true && true); // 结果是true
2、逻辑或 (||):当至少一个操作数为true时返回true。
boolean result = (true || false); // 结果是true
3、逻辑非 (!):反转操作数的逻辑状态。如果操作数为true,则返回false,反之亦然。
boolean result = !true; // 结果是false
4、逻辑异或 (^):当两个操作数有一个(但不是两个)为true时返回true。
boolean result = (true ^ false); // 结果是true
注意:
&&和||运算符是短路运算符。这意味着它们不总是评估它们的两个操作数。例如,对于&&,如果左操作数为false,则整个表达式的结果必定为false,因此右操作数不会被评估。对于||,如果左操作数为true,则整个表达式的结果必定为true,因此右操作数不会被评估。^运算符在用于整数类型时是按位异或,但当用于布尔类型时,它表示逻辑异或。
逻辑运算符在编程中非常有用,尤其是在条件语句和循环中,它们允许你基于多个条件来做决策或控制程序的流程。
2.4位运算符
位运算符是对二进制数的每一位进行运算的符号,它是专门对数字0和1进行操作。

例如:
1、按位与 (&):如果两个相应的二进制位都为1,则结果为1,否则为0。
int result = 5 & 3; // 5的二进制表示为101,3的二进制表示为011,所以结果是1
2、按位或 (|):如果两个相应的二进制位中至少有一个为1,则结果为1,否则为0。
int result = 5 | 3; // 5的二进制表示为101,3的二进制表示为011,所以结果是7
3、按位异或 (^):如果两个相应的二进制位不同,则结果为1,否则为0。
int result = 5 ^ 3; // 5的二进制表示为101,3的二进制表示为011,所以结果是6
4、按位非 (~):反转所有的二进制位。
int result = ~5; // 5的二进制表示为101,反转后为010,所以结果是-6(考虑到二进制的补码表示)
5、左移 (<<):将左操作数的值向左移动右操作数指定的位数。右边空出的位用零填充。
int result = 5 << 1; // 5的二进制表示为101,左移一位后为1010,所以结果是10
6、右移 (>>):将左操作数的值向右移动右操作数指定的位数。对于正数,左边空出的位用零填充;对于负数,左边空出的位用一填充。
int result = 5 >> 1; // 5的二进制表示为101,右移一位后为10,所以结果是2
7、无符号右移 (>>>):将左操作数的值向右移动右操作数指定的位数。左边空出的位用零填充,不考虑符号。
int result = -5 >>> 1; // 结果是一个非常大的正数
位运算符在某些特定的应用中非常有用,如图形处理、加密和低级编程任务。由于它们直接操作二进制位,所以通常比其他算术或逻辑运算符更快。
三、总结
本文主要介绍了数据类型的转换分别有自动类型转换和强制类型转换,也介绍了这两种类型转换的用法,需要注意的是强制类型转换可能造成信息的丢失。
运算符包括了算术运算符、比较运算符、逻辑运算符、位运算符。算术运算符是+、-、*、\,还有%模数运算符或余数运算符。详细介绍了自增和自减的用法。比较运算符是对两个数值或变量进行比较,结果是一个布尔值true或false。
逻辑运算符对布尔型的数据进行操作,结果也是一个布尔值。位运算符是对二进制数的每一位进行运算的符号,它是专门对数字0和1进行操作。希望通过本文的学习,能够帮助到你理解数据类型转换和运算符。
相关文章:
Java基础入门篇——Java变量类型的转换和运算符(七)
目录 一、变量类型 1.1自动类型转换(隐式转换) 1.2 强制类型转换(显式转换) 1.3类型转换的其他情况 二、运算符 2.1算术运算符 2.2比较运算符 2.3逻辑运算符 2.4位运算符 三、总结 在Java中,变量类型的转换…...
20230807通过ffmpeg将DTS编码的AUDIO音频转换为AAC编码
20230807通过ffmpeg将DTS编码的AUDIO音频转换为AAC编码 2023/8/7 20:04 ffmpeg dts 转AAC 缘起:由于网上找的电影没有中文字幕,有内置的英文字幕,但是还是通过剪映/RP2023识别一份英文字幕备用! I:\Downloads\2005[红眼航班]Red E…...
一生一芯1——windows与Ubuntu双系统安装
UltraISO下载 下载链接:https://pan.baidu.com/s/18ukDs6yL64qU6thYyZEo-Q?pwdo8he 提取码:o8he 一路傻瓜安装,安装后点击继续试用 Ubuntu系统下载 这里我使用的是官网的22.04版本,由于大于4G,无法上传至百度网盘…...
Linux下的CGI服务器
一、概述 使用进程池,半同步/半异步并发模式。 同步进程:工作子进程负责进行具体的连接以及具体的I/O,顺序执行 异步进程:主进程监听连接事件,将连接任务分发给子线程 二、设计逻辑 1.设计进程池的创建逻辑 2.父…...
后端开发3.Fastdfs的搭建
使用Docker安装 拉取镜像 docker pull registry.cn-beijing.aliyuncs.com/tianzuo/fastdfs 启动容器(修改ip)【fastdfs/自启动】(22122/23000/8888) docker run -d --restart=always --privileged=true --net=host --name=fastdfs -e IP=你的ip地址 -e WEB_PORT=8888 -v …...
目标检测与跟踪 (3)- TensorRTYOLO V8性能优化与部署测试
系列文章目录 目标检测与跟踪 (1)- 机器人视觉与YOLO V8_Techblog of HaoWANG的博客-CSDN博客 目标检测与跟踪 (2)- YOLO V8配置与测试_Techblog of HaoWANG的博客-CSDN博客 目录 系列文章目录 前言 YOLO v8 TensorRT 一、…...
SAS-数据集SQL垂直(纵向)合并
一、SQL垂直合并的基本语法 一个selectt对应一个表,select之间用set-operator连接,set-operator包括:except(期望)、intersect(相交)、union(合并),outer un…...
SpringBoot3 整合Prometheus + Grafana
通过Prometheus Grafana对线上应用进行观测、监控、预警… 健康状况【组件状态、存活状态】Health运行指标【cpu、内存、垃圾回收、吞吐量、响应成功率…】Metrics… 1. SpringBoot Actuator 1. 基本使用 1. 场景引入 <dependency><groupId>org.springframew…...
Python实现GA遗传算法优化LightGBM回归模型(LGBMRegressor算法)项目实战
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 遗传算法(Genetic Algorithm,GA)最早是由美国的 John holland于20世…...
【基于IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 构建逻辑回归鸢尾花分类预测模型】
逻辑回归进行鸢尾花分类的案例 背景说明: 基于IDEA Spark 3.4.1 sbt 1.9.3 Spark MLlib 构建逻辑回归鸢尾花分类预测模型,这是一个分类模型案例,通过该案例,可以快速了解Spark MLlib分类预测模型的使用方法。 依赖 ThisBui…...
资深测试老鸟整理,性能测试-常见调优详细,卷起来...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 常见的一些性能缺…...
【第五章 flutter学习之flutter进阶组件-上篇】
文章目录 一、列表组件1.常规列表2.动态列表 二、FridView组件三、Stack层叠组件四、AspectRatio Card CircleAvatar组件五、按钮组件六、Stack组件七、Wrap组件八、StatefulWidget有状态组件总结 一、列表组件 1.常规列表 children: const <Widget>[ListTile(leading: …...
鸿蒙边缘计算网关正式开售
IDO-IPC3528鸿蒙边缘计算网关基于RK3568研发设计,采用22nm先进工艺制程,四核A55 CPU,主频高达2.0GHz,支持高达8GB高速LPDDR4,1T算力NPU,4K H.265/H264硬解码;视频输出接口HDMI2.0,双…...
Bytebase 2.5.0 - VCS 集成支持 Azure DevOps,支持达梦数据库
🚀 新功能 VCS 集成支持 Azure DevOps。研发版本支持达梦数据库。允许用户设置需要重新登录的频率。支持选择并导出数据库变更历史。新增 MySQL Schema 设计器。支持字段模板库。 🎄 改进 在 SQL 编辑器中,优化 MongoDB 的查询结果。优化 …...
tomcat通过systemctl启动时报错Cannot find /usr/local/tomcat/bin/setclasspath.sh
解决方法,检查自己的CATALINA_HOME和TOMCAT_HOME配置情况 我的配置在/etc/profile下的如下 使其立即生效 后将/usr/lib/systemd/system/tomcat.service中的CATALINA_HOME和TOMCAT_HOME和/etc/profile改一致 重新加载再重启解决 解决方法,检查自己的C…...
Django架构图
1. Django 简介 基本介绍 Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架 使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 Django 本身…...
vue- 创建wms-web项目
vue 发展历程 安装vite 第一步 创建wms-web项目 第二步 打开文件夹并安装所有开发环境的依赖 都可以放静态资源 public>vite.svg 不会重新编译成其他名字 assets>vue.svg 会重新编译成一个随机的名称 重新编译 启动 第三步 spa 单页渲染 第四步 安装路由 第五步 …...
集成学习:机器学习模型如何“博采众长”
前置概念 偏差 指模型的预测值与真实值之间的差异,它反映了模型的拟合能力。 方差 指模型在不同的训练集上产生的预测结果的差异,它反映了模型的稳定性。 方差和偏差对预测结果所造成的影响 在机器学习中,我们通常希望模型的偏差和方差都…...
排序算法(二)
1.希尔排序-Shell Sort 1.算法原理 将未排序序列按照增量gap的不同分割为若干个子序列,然后分别进行插入排序,得到若干组排好序的序列; 缩小增量gap,并对分割为的子序列进行插入排序;最后一次的gap1,即整个…...
CVPR 2023 | 无监督深度概率方法在部分点云配准中的应用
注1:本文系“计算机视觉/三维重建论文速递”系列之一,致力于简洁清晰完整地介绍、解读计算机视觉,特别是三维重建领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; CVPR, ICCV, ECCV, NeurIPS, ICLR, ICML, TPAMI, IJCV 等)。本次介绍的论文是:2023年,CVPR,…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...
深入解析 ReentrantLock:原理、公平锁与非公平锁的较量
ReentrantLock 是 Java 中 java.util.concurrent.locks 包下的一个重要类,用于实现线程同步,支持可重入性,并且可以选择公平锁或非公平锁的实现方式。下面将详细介绍 ReentrantLock 的实现原理以及公平锁和非公平锁的区别。 ReentrantLock 实现原理 基本架构 ReentrantLo…...
Linux入门(十五)安装java安装tomcat安装dotnet安装mysql
安装java yum install java-17-openjdk-devel查找安装地址 update-alternatives --config java设置环境变量 vi /etc/profile #在文档后面追加 JAVA_HOME"通过查找安装地址命令显示的路径" #注意一定要加$PATH不然路径就只剩下新加的路径了,系统很多命…...
