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为每个基本数据类型提供了一个对应的包装类,如IntegerintDoubledouble等。你可以使用这些包装类的方法来进行类型转换,例如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比较运算符

比较运算符用于比较两个值。这些运算符返回一个布尔值,即truefalse,取决于比较的结果。 

以下是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逻辑运算符

逻辑运算符用于基于一个或多个布尔表达式的值来返回一个布尔结果(truefalse)。 

例如: 

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进行操作。希望通过本文的学习,能够帮助到你理解数据类型转换和运算符。

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

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

相关文章

ubuntu python虚拟环境venv搭配systemd服务实战

文章目录 参考文章目录结构步骤安装venv查看python版本创建虚拟环境激活虚拟环境运行我们程序看缺少哪些依赖库&#xff0c;依次安装它们接下来我们配置python程序启动脚本&#xff0c;脚本中启动python程序前需先激活虚拟环境配置.service文件然后执行部署脚本&#xff0c;成功…

考研算法第40天:众数 【模拟,简单题】

题目 本题收获 又是一道比较简单的模拟题&#xff0c;就不说解题思路了&#xff0c;说一下中间遇到的问题吧&#xff0c;就是说cin输入它是碰到空格就停止输入的&#xff0c;详细的看下面这篇博客对于cin提取输入流遇到空格的问题_while(cin) 空格_就是那个党伟的博客-CSDN博…

JVM 调优实例

点击下方关注我&#xff0c;然后右上角点击...“设为星标”&#xff0c;就能第一时间收到更新推送啦~~~ JVM提供了多种垃圾回收器&#xff0c;可以根据应用程序的需求选择最适合的垃圾回收器。例如&#xff0c;如果应用程序需要更快的响应时间&#xff0c;可以选择并行垃圾回收…

Hello,SpringBoot!

一、回顾什么是Spring Spring是一个开源框架&#xff0c;2003 年兴起的一个轻量级的Java 开发框架&#xff0c;作者&#xff1a;Rod Johnson Spring是为了解决企业级应用开发的复杂性而创建的&#xff0c;简化开发。 Spring是如何简化Java开发的 为了降低Java开发的复杂性…

模仿火星科技 基于cesium+ 贴地测量+可编辑

当您进入Cesium的编辑贴地测量世界&#xff0c;下面是一个详细的操作过程&#xff0c;帮助您顺利使用这些功能&#xff1a; 1. 创建提示窗&#xff1a; 启动Cesium应用&#xff0c;地图场景将打开&#xff0c;欢迎您进入编辑模式。在屏幕的一角&#xff0c;一个友好的提示窗将…

【在一个升序数组中插入一个数仍升序输出】

在一个升序数组中插入一个数仍升序输出 题目举例&#xff1a; 有一个升序数组nums&#xff0c;给一个数字data&#xff0c;将data插入数组nums中仍旧保证nums升序&#xff0c;返回数组中有效元素个数。 比如&#xff1a;nums[100] {1, 2, 3, 5, 6, 7, 8, 9} size 8 data 4 …

LabVIEW开发高压配电设备振动信号特征提取与模式识别

LabVIEW开发高压配电设备振动信号特征提取与模式识别 矿用高压配电设备是井下供电系统中的关键设备之一&#xff0c;肩负着井下供配电和供电安全的双重任务&#xff0c;其工作状态直接影响着井下供电系统的安全性和可靠性。机械故障占配电总故障的70%。因此&#xff0c;机械故…

报错Uncaught (in promise) Error: Manifest request to...

在使用nuxt框架时&#xff0c;出现如下报错&#xff1a; 解决方案&#xff1a; 不要打开两个以上的开发者工具更换nuxt的端口号 参考资料&#xff1a;https://github.com/nuxt/nuxt.js/issues/6202

DP(状态机模型)

状态机模型和01背包问题的区别就在于&#xff0c;01背包中每个物品选或不选都是独立的&#xff0c; 不受前者约束不对后者产生影响&#xff0c;而状态机不一样。换成01那种状态之间的转化图来看的话,01背包中0和1的转化不受任何约束&#xff0c;可以说是有向完全图&#xff1b;…

浅析 C 语言的共用体、枚举和位域

前言 最近在尝试阅读一些系统库的源码&#xff0c;但是其中存在很多让我感到既熟悉又陌生的语法。经过资料查阅&#xff0c;发现是 C 语言中的共用体和位域。于是&#xff0c;趁着课本还没有扔掉&#xff0c;将一些相关的知识点记录在本文。 文章目录 前言共用体 (union)枚举…

理解 Python 的 for 循环

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 在本篇博客中&#xff0c;我们将讨论 Python 中 for 循环的原理。 我们将从一组基本例子和它的语法开始&#xff0c;还将讨论与 for 循环关联的 else 代码块的用处。 然后我们将介绍迭代对象、迭代器和迭代器协议&…

Android 14重要更新预览

Android 14重要更新预览 国际化 Android 14 在 Android 13 的基础上进一步扩展了按应用设定语言功能&#xff0c;提供了一些额外的功能&#xff1a; 自动生成应用的 localeConfig&#xff1a;从 Android Studio Giraffe Canary 7 和 AGP 8.1.0-alpha07 开始&#xff0c;您可以…

Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis tbms

​ 功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查…

【人工智能前沿弄潮】—— SAM自动生成物体mask

SAM自动生成物体mask 由于SAM可以高效处理提示&#xff0c;可以通过在图像上抽样大量的提示来生成整个图像的mask。这种方法被用来生成数据集SA-1B。 类SamAutomaticMaskGenerator实现了这个功能。它通过在图像上的网格中对单点输入提示进行抽样&#xff0c;从每个提示中SAM可…

【动态规划刷题 6】 删除并获得点数 粉刷房子

740. 删除并获得点数 给你一个整数数组 nums &#xff0c;你可以对它进行一些操作。 每次操作中&#xff0c;选择任意一个 nums[i] &#xff0c;删除它并获得 nums[i] 的点数。之后&#xff0c;你必须删除 所有 等于 nums[i] - 1 和 nums[i] 1 的元素。 开始你拥有 0 个点数。…

【数据库】Redis可以替代Mysql吗

Redis和Mysql的搭配 Redis可以替代Mysql吗什么是RedisRedis适用的场景以及优点Redis的缺点 什么是MysqlMysql的优点Mysql缺点 总结 Redis可以替代Mysql吗 Redis不能代替MySQL&#xff0c; Redis和MySQL只能是一种互补。 什么是Redis Redis是一种非关系型数据库&#xff0c;也…

【iPhone】手机还有容量,拍视频却提示 iPhone 储存空间已满

文章目录 前言解决方案 结语 前言 今天在用 iPhone 录像的时候突然提醒我 iPhone储存空间已满 你没有足够的储存空间来录制视频” 可我明明还有 20G 的容量 我非常疑惑&#xff0c;因为我之前还剩1个G都能录像&#xff0c;现在20G反而不行了&#xff0c;于是重启了手机&#…

Kali中AWD靶机环境搭建

Kali中AWD靶机环境搭建 1、kali安装docker2、克隆项目&#xff08;400多M&#xff0c;下载会有点久&#xff09;3、进入项目4、下载镜像5、改镜像名6、比赛环境搭建6.1 启动靶机6.2 连接裁判机&#xff0c;启动check脚本6.3 关闭环境命令 7、 靶机访问方式7.1 web界面访问7.2 s…

代理模式:静态代理+JDK/CGLIB 动态代理

文章目录 1. 代理模式2. 静态代理3. 动态代理3.1. JDK 动态代理机制3.1.1. 介绍 3.1.2. JDK 动态代理类使用步骤3.1.3. 代码示例3.2. CGLIB 动态代理机制3.2.1. 介绍3.2.2. CGLIB 动态代理类使用步骤3.2.3. 代码示例 3.3. JDK 动态代理和 CGLIB 动态代理对比 4. 静态代理和动态…

HTML|计算机网络相关

1.三次握手 第一次握手&#xff1a;客户端首先向服务端发送请求。 第二次握手&#xff1a;服务端在接收到客户端发送的请求之后&#xff0c;需要告诉客户端已收到请求。 第三次握手&#xff1a;客户端在接收到服务端发送的请求和确认信息之后&#xff0c;同样需要告诉服务端已…