Java基础05——类型转换(本文为个人学习笔记,内容整理自哔哩哔哩UP主【遇见狂神说】的公开课程。 > 所有知识点归属原作者,仅作非商业用途分享)

Java基础05——类型转换

类型转换

  • 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。

如:在这里插入图片描述

  • byte(占1个字节),short(占2个字节),char(占2个字节)→int(4个字节)→long(占8个字节)→float(占4个字节)→double(占8个字节)

  • float之前均为整数类型,之后为浮点数(小数)类型

  • 由此可见浮点数(小数)的优先级一定大于整数。

  • 运算中,不同类型的数据先转化为同一类型,然后进行运算

  • 强制类型转换:

    • 由高到低

    • 利用(),所转换类型,叫强制类型转换 格式:(类型)变量名

      public class 强制类型转换{public static void main(String[] args){int i = 128;byte b =(byte)i; //(类型)变量名// 并且byte的最大取值范围是127,最小是-128,以上取值128,超出范围,输出的结果不可控(不知道变成什么),专用名词:内存溢出。// 所以,取值要避免内存溢出  }}
      
    • 转换时,要避免内存溢出

  • 在IDEA上实操:

在这里插入图片描述

整数类型和浮点数类型(具体范围):在Java基础03中,[Java的数据类型分为两大类]标题

  • 自动类型转换
    • 由低到高(并不需要任何其他操作)
public class 自动类型转换{public static void main(String[] args){int i = 128;double = i;  //因为式由高到低,会自动转换} 
}
  • 在IDEA上实操

在这里插入图片描述

注意点:

/*
注意点:
1.不能对布尔值(Boolean)进行转换
2.不能把对象类型转换不相干的类型
3.把高容量转换为低容量,强制转换
4.转换的时候可能存在内存溢出,或者精度问题!
*/

public class 验证注意点{public static void main(String[] args){System.out.println((int)22.5);  //输出结果为22,精度丢失0.5//System.out.println((boolean)22.5);  //会出现(不兼容类型:double无法转换为BooleanSystem.out.println((int)23.5f); // 输出结果为23,精度丢失0.5}
}
  • 在IDEA上实操

在这里插入图片描述

在这里插入图片描述

public class 巩固{public static main(String[] aegs){char c = 'A';int d = c+1;System.out.println(d); // 低到高,无需任何其他操作System.out.println((char)d); //当前d是int类型,转为char类型,由高转低,需要强制转换。}
}
  • 在IDEA上实操

在这里插入图片描述

类型转换拓展——当操作比较大的时候,注意溢出问题

public class 类型转换拓展{public static void main(String[] args){// 拓展:当操作比较大的时候,注意溢出问题// 数字之间可以用下划线分割,下划线并不会被输出int money = 10_0000_0000;  // money(钱)int years = 20;   // years(年份)int total = money * years;   // total(总数)System.out.println(total); //输出本该是200亿,但是却是负数,这种状态就是计算的时候溢出了long total2 = money * years; //因为这两个变量默认格式是int,转换之前已经存在问题了?System.out.println(total2);long total3 = money *((long)years); //已知在转换前就出问题了,那么在之前就强制转换一个变量为long,后续就会以long类型输出(避免内存溢出)System.out.println(total3);}
}

解决办法总结:

  • 步骤1.先将最后输出结果放到能承受的类型当中(由底到高)
    • 就好比例子中:int和long,因为int范围是-2147483648~2147483647(21亿左右)而输出的结果却是200亿,远高于int范围,那么就要转化为比它更高的long
  • 步骤2.若两个(或多个)变量均低于结果输出类型(那么最后的结果是先计算低类型的值,在转换为高类型的值,若低类型的值先溢出,再转换为高类型的值已经晚了)
    • 就好比例子中:两个变量都是int,它们相乘的时候,最终结果也是int,结果本身已经超出int的范围(已经出问题了),在转换为long晚了。
  • 步骤3.那么将它们其中一个强制转换为高类型(那么最后的结果是直接以高类型的值输出,结果就非常准确)
    • 就好比例子中:先将变量[years]转化为long,再进行计算,就不会出现int溢出的情况,最后的结果是直接以long类型输出的,long类型的范围-9223372036854775808~9223372036854775807(远超200亿)不会出现溢出的情况,所以最后的结果是准确的。

在IDEA上实操

在这里插入图片描述

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

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

相关文章

mysql基础(二)五分钟掌握全量与增量备份

全量备份 Linux环境 数据备份 数据库的备份与恢复有多中方法,通过mysql自带的mysqldump工具可对数据库进行备份。语法: mysqldump -u username -p password --databases db_name > file_name .sql说明: -u参数指定用户名,usern…

使用Windbg分析多线程死锁项目实战问题分享

目录 1、问题描述 2、使用.effmach x86命令切换到32位上下文 3、切换到UI线程,发现UI线程死锁了 4、使用!locks命令查看临界区锁的详细信息,遇到了问题 5、使用dt命令查看临界区对象信息,找到发生死锁的多个线程 6、用户态锁与内核态锁…

防火墙组网方式总结

一、部署模式:灵活适配多样网络环境下一代防火墙(NGAF)具备极强的网络适应能力,支持五种核心部署模式,可根据不同网络需求灵活选择。路由模式:防火墙相当于路由器,位于内外网之间负责路由寻址&a…

AI大模型:(二)5.1 文生视频(Text-to-Video)模型发展史

目录 1.介绍 2.发展历史 2.1.早期探索阶段(2015-2019) 2.1.1.技术萌芽期 2.1.2.RNN/LSTM时代 2.2.技术突破期(2020-2021) 2.2.1 Transformer引入视频生成 2.2.2 扩散模型的兴起 2.3.商业化突破期(2022-2023) 2.3.1 产品化里程碑 2.3.2 竞争格局形成 2.4.革命…

14mm寻北仪能否塞进液压支架生死缝隙?

在煤矿井下世界的方寸之间,液压支架的每个关键节点都承载着千钧重压。顶梁铰接点、立柱顶端、掩护梁角落,恰恰是空间最为局促的“禁区”。ER-MNS-10A MEMS寻北仪应运而生!它采用了先进的MEMS陀螺技术,以14mm至薄高度、40g极致轻盈…

python之浅拷贝深拷贝

文章目录潜拷贝(shallow copy)深拷贝(deep copy)总结一下python的浅拷贝和深拷贝.潜拷贝(shallow copy) python中潜拷贝指的是:构造一个新的复合对象,然后将原对象中的对象引用插入其中 平常开发过程中潜拷贝是比深拷贝更常见的场景. 比如编程中使用到的一些基本的…

普通大学本科生如何入门强化学习?

问题:你平时是如何紧跟大型语言模型和智能体技术前沿的?有哪些具体的学习和跟踪方式?回答:我会通过“输入-内化-实践”结合的方式跟踪前沿。首先,学术动态方面,每天花10分钟浏览arXiv的http://cs.CL和http://cs.AI板块&#xff0c…

新手向:Python实现数据可视化图表生成

Python数据可视化入门:从零开始生成图表数据可视化是数据分析过程中不可或缺的关键环节,它通过将抽象的数字信息转化为直观的图形展示,帮助分析师和决策者更快速、更准确地发现数据中隐藏的模式、规律和发展趋势。在当今大数据时代&#xff0…

VBA即用型代码手册:计算选择的单词数Count Words in Selection

我给VBA下的定义:VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率,而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。作为我的学员要利用我的积木编程思想,积木编程最重要的是积木如何搭建及…

DNS(域名系统)

分层结构根域名(ipv4,13台),二级域名,三级域名……相关记录A将域名解析为ipv4地址AAAA将域名解析为ipv6地址MX指名该区域为邮件服务区PTR反向查询将主机名解析为域名NS记录服务器的名字CNAME别名查询方式递归查询迭代查…

【大模型】强化学习算法总结

角色和术语定义 State:状态Action:动作Policy/actor model:策略模型,用于决策行动的主要模型Critic/value model:价值模型,用于评判某个行动的价值大小Reward model:奖励模型,用于给…

基于梅特卡夫定律的开源链动2+1模式AI智能名片S2B2C商城小程序价值重构研究

摘要:梅特卡夫定律揭示了网络价值与用户数量的平方关系,在互联网经济中,连接的深度与形式正因人的参与发生质变。本文以开源链动21模式、AI智能名片与S2B2C商城小程序的协同应用为研究对象,通过实证分析其在社群团购、下沉市场等场…

Ubuntu22.04安装CH340驱动及串口

一、CH340驱动安装 1.1 查看USB设备能否被识别 CtrlAltT打开终端: lsusb 插入设备前: 插入设备后: 输出中包含ID 1a86:7523 QinHeng Electronics CH340 serial converter的信息,这表明CH340设备已经被系统识别。 1.2 查看USB转串…

CPU缓存(CPU Cache)和TLB(Translation Lookaside Buffer)缓存现代计算机体系结构中用于提高性能的关键技术

CPU缓存(CPU Cache)和TLB(Translation Lookaside Buffer)缓存是现代计算机体系结构中用于提高性能的关键技术。它们通过减少CPU访问数据和指令的延迟来提高系统的整体效率。以下是对这两者的详细解释: 1. CPU 缓存 CPU…

唐扬·高并发系统设计40问

课程下载:https://download.csdn.net/download/m0_66047725/91644703 00开篇词 _ 为什么你要学习高并发系统设计?.pdf 00开篇词丨为什么你要学习高并发系统设计?.mp3 01 _ 高并发系统:它的通用设计方法是什么?.pdf …

基于Spring Data Elasticsearch的分布式全文检索与集群性能优化实践指南

基于Spring Data Elasticsearch的分布式全文检索与集群性能优化实践指南 技术背景与应用场景 随着大数据时代的到来,海量信息的存储与检索成为各类应用的核心需求。Elasticsearch 作为一款分布式搜索引擎,凭借其高可扩展、高可用和实时检索的优势&#x…

Linux系统编程——基础IO

一些前置知识:文件 属性 内容文件 分为 打开的文件、未打开的文件打开的文件:由进程打开,本质是 进程与文件 的关系;维护的文件对象先加载文件属性,文件内容一般按需加载未打开的文件:在永久性存储介质 —…

力扣164:最大间距

力扣164:最大间距题目思路代码题目 给定一个无序的数组 nums,返回 数组在排序之后,相邻元素之间最大的差值 。如果数组元素个数小于 2,则返回 0 。 您必须编写一个在「线性时间」内运行并使用「线性额外空间」的算法。 思路 这道题的思路…

Redis类型之Hash

1.hash常用操作 这里还是要强调,redis的类型指的是value的类型。故而这里的hash是把key这一层组织完成以后,到了value这一层,value的其中一种类型还可以是hash。1.1 HSET 和 HGETHSET:设置hash类型的keyHSET key field value [fie…

Apache Pulsar性能与可用性优化实践指南

Apache Pulsar性能与可用性优化实践指南 一、技术背景与应用场景 随着微服务、实时计算和大数据平台的普及,消息系统承担了海量数据的传输与解耦任务。Apache Pulsar作为新一代分布式消息与流处理系统,拥有多租户、持久化存储和灵活一致性的特点&#xf…