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

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

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

相关文章

Java ThreadLocal是什么

文章目录 引子&#xff1a;SimpleDateFormat类ThreadLocal是什么ThreadLocal 的另一个用途**总结**ThreadLocal的两大用途ThreadLocal 的源代码ThreadLocalMapThreadLocalMap 的问题ThreadLocal的key为什么设置成弱引用&#xff1f;value为什么不是弱引用&#xff1f;Thread、T…

如何让你的视频在 TikTok上变得火爆?

TikTok凭借巨大的用户量和商业价值&#xff0c;它从来不缺优质内容。如何在众多内容中脱颖而出获得关注&#xff0c;这并不简单。和泛流量账号不同&#xff0c;商业账号的目的更加明确&#xff0c;也就是说&#xff0c;商业账号并不一定要以高流量最为唯一的追求目标&#xff0…

跨域+四种解决方法

文章目录 一、跨域二、JSONP实现跨域请求三、前端代理实现跨域请求四、后端设置请求头实现跨域请求五、Nginx代理实现跨域请求5.1 安装Nginx软件5.2 使用Ubuntu安装nginx 本文是在学习课程满神yyds后记录的笔记&#xff0c;强烈推荐读者去看此课程。 一、跨域 出于浏览器的同…

JVM笔记 —— 出现内存溢出错误时时如何排查

一、出现内存溢出的几种情况 内存溢出错误分为StackOverflowError和OutOfMemoryError&#xff0c;前者是栈中出现溢出&#xff0c;后者一般是堆或方法区出现溢出&#xff0c;简称OOM 1. 栈溢出 StackOverflowError 栈溢出一般都是因为没有正确的结束递归导致的&#xff0c;无…

Qt5兼容使用之前Qt4接口 intersect接口

1. 问题 项目卡中遇到编译报错&#xff0c; 错误 C2039 “intersect”: 不是“QRect”的成员 。 2. 排查过程 排查到依赖的第三方代码&#xff0c;使用 intersect 接口&#xff0c; 跟踪排查到头文件中使用了***#if QT_DEPRECATED_SINCE(5, 0)*** #if QT_DEPRECATED_SINCE…

【CSS】CSS 选择器

CSS 选择器 1.基础选择器 1.1 元素选择器 语法&#xff1a;标签名{...} 元素选择器会选中对应标签名的HTML元素&#xff0c;例如&#xff1a;p{...}&#xff0c;div{...}&#xff0c;span{...}等 1.2 类选择器 语法&#xff1a;.类名{...} 类选择器会选中class属性为指定…

[Idea热部署]两秒钟学会热部署

两者同时适配好,保证没有问题 哈&#xff0c;谢谢各位同志的阅读&#xff0c;然后呢如果觉得本文对您有所帮助的话&#xff0c;还给个免费的赞捏 Thanks♪(&#xff65;ω&#xff65;)&#xff89;

【ArcGIS Pro二次开发】(58):数据的本地化存储

在做村规工具的过程中&#xff0c;需要设置一些参数&#xff0c;比如说导图的DPI&#xff0c;需要导出的图名等等。 每次导图前都需要设置参数&#xff0c;虽然有默认值&#xff0c;但还是需要不时的修改。 在使用的过程中&#xff0c;可能会有一些常用的参数&#xff0c;希望…

每天一道leetcode:139. 单词拆分(动态规划中等)

今日份题目&#xff1a; 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 示例1 输入: s "leetcode", …

【解密算法:时间与空间的博弈】

本章重点 ​​什么是数据结构&#xff1f; 什么是算法&#xff1f; 算法效率 时间复杂度 空间复杂度 常见时间复杂度以及复杂度oj练习 1. 什么是数据结构&#xff1f; 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系…

Docker 数据管理

文章目录 前言1、Dcoker 文件体系2、volume挂载案例2.1、挂载运行一个容器实例方法1方法2 3、volumes-from 案例4、备份/恢复数据卷5、删除数据卷 前言 为什么要有数据管理&#xff1f; 因为&#xff1a; Docker 是不提供持久化的 &#xff0c;容器是不稳定的&#xff1b;一个…

TCP 三次握手,四次挥手

1、三次握手 第一次握手 SYN 等于1&#xff0c;SeqX 第二次握手 SYN等于1 ACK等于1&#xff0c;SeqY&#xff0c;AckX1 第三次SYN等于0 ACK等于1&#xff0c;SeqX1&#xff0c;AckY1 ackRow都是对应请求seqraw&#xff0c;三次握手后&#xff0c;Seq就是服务器前一个包中的ac…

【Git】—— 标签管理

目录 &#xff08;一&#xff09;理解标签 1、作用 &#xff08;二&#xff09;创建标签 &#xff08;三&#xff09;操作标签 1、删除标签 2、推送标签 3、删除远程标签 &#xff08;一&#xff09;理解标签 标签 tag &#xff0c;可以简单的理解为是对某次 commit 的…

Java基础篇--运算符

目录 算术运算符 赋值运算符 比较运算符 逻辑运算符 条件运算符&#xff08;?:&#xff09; instanceof 运算符 Java运算符优先级 在程序中经常出现一些特殊符号&#xff0c;如、-、*、、>等&#xff0c;这些特殊符号称作运算符。运算符用于对数据进行算术运算、赋值…

flowable-ui部署(6.80)

不使用tomcat直接看最后边 前置条件&#xff1a;Apache Tomcat/9.0.78版本及以下 https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.78/bin/apache-tomcat-9.0.78-windows-x64.zip 一、下载资源 https://github.com/flowable/flowable-engine/releases/download/flowable-6.…

vue3+ts使用antv/x6

使用 2.x 版本 x6.antv 新官网: 安装 npm install antv/x6 //"antv/x6": "^2.1.6",项目结构 1、初始化画布 index.vue <template><div id"container"></div> </template><script setup langts> import { onM…

TCP网络服务器设计

最近设计了一个网络服务器程序&#xff0c;对于4C8G的机器配置&#xff0c;TPS可以达到5W。业务处理逻辑是简单的字符串处理。服务器接收请求后对下游进行类似广播的发送。在此分享一下设计方式&#xff0c;如果有改进思路欢迎大家交流分享。 程序运行在CentOS7.9操作系统上&a…

yum 安装本地包 rpm

有时直接yum install 有几个包死活下不下来 根据网址&#xff0c;手动下载&#xff0c;下载后上传至 centos 然后运行 sudo yum localinstall xxx.rpm 即可安装 参考 https://blog.csdn.net/weiguang1017/article/details/52293244

利用状态监测和机器学习提高冷却塔性能的具体方法

在现代工业生产中&#xff0c;冷却塔扮演着至关重要的角色&#xff0c;它们的性能直接影响着工艺流程的稳定性和效率。为了确保冷却塔的正常运行和减少系统故障&#xff0c;状态监测和机器学习成为了关键技术。 图.冷却塔&#xff08;PreMaint&#xff09; 在前文《基于人工智…

开发工具IDEA的下载与初步使用【各种快捷键的设置,使你的开发事半功倍】

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于IDEA的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.IDEA的简介以及优势 二.IDEA的下载 1.下…