8、基本数据类型转换(自动转换和强制转换)

news2024/9/23 21:28:08

基本类型转换

  • 1、自动类型转换
  • 2、强制类型转换

1、自动类型转换

定义:当Java程序在进行赋值或者运算时,精度小的类型会自动转换成精度大的数据类型,这个就是自动类型转换。(自动小转大)
背多芬:
在这里插入图片描述

这里要明确一个概念:高司令当初创建Java的时候规定char 和 byte、short是不能自动转换,所以这是Java语言的规则,我们记住就可以了。
另外,Boolean在Java中只有true和false,没有0/1,所以不参与类型转换。
在long(8字节)可以转换成float(4字节)中,我其实查了一些资料,就我个人理解:应该是因为float采用科学计数法,本身精度就大,所以能自动转换。(感兴趣的可以自己去查一下哈,我不太感兴趣,所以直接背喽😁)

使用细节:
①有多种类型数据一起进行混合运算时,系统首先自动将所有数据转换成容量最大的数据类型,然后再进行计算。

int n1 = 10;
float f1 = n1 + 1.1F;		 //float
System.out.println("f1 = "+f1);    
double d1 = n1 + 1.1;		//double
System.out.println("d1 = "+d1);

结果:
在这里插入图片描述
分析一下: 第二条语句中参与运算的有int 和 float,所以 int类型 先转换成 float类型,再进行运算(注意:此处 1.1 一定要加 ‘ F ’,不然系统会默认为double,然后报错,所以变量最终的类型精度要大于或等于运算结果的精度),第四条语句同上。

 
②当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换。
小  ----自动类型转换---->   大
大  ----强制类型转换---->   小

③、(byte,short)和char之间不会自动转换。
在这里插入图片描述

 
④byte,short,char三者任意可以进行计算,在计算时首先转换为int类型。

char c1 = 1;
byte b1 = 1;
byte b2 = 2;
short s1 = 1;

int x = c1 + b1;
System.out.println("c1 + b1 = " + x);
        
int y = b1 + b2;
System.out.println("b1 + b2 = " + y);
        
long z = c1 + b1 + s1;
System.out.println("c1 + b1 + s1 = " + z);

结果:
在这里插入图片描述
我们可以从溢出角度理解,假设两个byte类型、赋值为127的变量相加,那么结果是254,而byte是一个字节,范围是(-128~127),如果仍然存进byte类型,就会溢出。同理,这三者任意搭配都有可能出现溢出的情况,因此直接拿精度(容量)较大的int类型去装它们,可以避免这种情况的发生。

⑤Boolean类型不参与转换。
前面提过了,Java中Boolean只有true和false的取值,没有0/1,所以不能自动转换。
在这里插入图片描述

2、强制类型转换

定义:自动类型转换的逆过程,将容量大的数据类型转换成容量小的数据类型。使用时要加上强制转换符(),eg:(int),(float)…但可能造成精度降低或溢出,格外要注意。

上代码:
在这里插入图片描述
结果:
在这里插入图片描述

分析一下:
Ⅰ、(int)1.9很明显损失了精度,不赘述了。
Ⅱ、用(byte)把 int类型进行强制转换,系统首先会判断这个将要存进的数的大小,若在byte精度范围里面,则可以存进去;若超出了精度范围,就会出现第三种情况,造成数据溢出。(其他强制转换也是如此。)

使用细节:
①强制符号()只针对最近的操作数有效,往往会使用小括号提升优先级。
在这里插入图片描述

 
来练习一下吧:

short s = 12;		//ok
s = s - 9;			//错误,int -> short

byte b = 10;		//ok
b = b + 11;			//错误,int -> byte

char c = 'a';		//ok
int i = 16;			//ok
float d = .314F;	//ok
double result = c + i + d;		//ok, float -> double

本人正在B站跟着韩顺平老师学Java(非广告),所以做个笔记仅供学习,文章虽标为原创,但大体思路是韩顺平老师的授课思路,在此基础上加上了自己的理解,不喜勿喷哦。
大家一起学,一起进步!!
各位宝子们如果觉滴还不错的话,可以点个赞 or 收个藏 or 打个赏哦,佛系博主一个。

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

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

相关文章

Windows环境下VSCode C环境配置

前言: 本文记录了自己在配置 Windows环境下 VSCode C开发环境的遇到的问题和解决方法。 参考: vscode c语言没有代码提示_clangd提示不生效-CSDN博客 VSCODE无法跳转_vscode 不能跳转-CSDN博客 vscode c/c环境配置(MinGW)调用第三官方库…

工业网关是做什么的?-天拓四方

随着信息技术的迅猛发展,物联网技术正日益融入我们生活的方方面面。而在工业领域,物联网技术的应用更是为传统制造业带来了翻天覆地的变化。其中,工业网关作为物联网的重要组成部分,正发挥着越来越重要的作用。那么,工…

纯血鸿蒙APP实战开发——短视频切换实现案例

短视频切换实现案例 介绍 短视频切换在应用开发中是一种常见场景,上下滑动可以切换视频,十分方便。本模块基于Swiper组件和Video组件实现短视频切换功能。 效果图预览 使用说明 上下滑动可以切换视频。点击屏幕暂停视频,再次点击继续播放…

excel中数据筛选技巧

1、筛选excel中破折号前后都为空的数据 在Excel中查找破折号前后为空的数据,你可以结合使用Excel的查找和筛选功能,或者利用一些公式来判断。以下是两种常用的方法: 方法一:使用筛选功能选中数据范围:首先&#xff0c…

[开发|鸿蒙] 鸿蒙OS开发环境搭建(笔记,持续更新)

搭建开发环境流程: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/installation_process-0000001071425528-V2 鸿蒙DevEco Studio 3.1.1 Release仅支持windows和mac系统 运行环境要求 为保证DevEco Studio正常运行,建议电脑配置…

本地渲染农场一年要花多少钱?开销超出想象!

小编在之前的文章中有分析过本地渲染农场和云渲染农场之间的优点和缺点: 云渲染农场渲染和自己搭建农场渲染怎么选?哪个更划算?https://news.vsochina.com/cn/industry/6145 从中可知,与云渲染服务相比,本地渲染农场…

【Redis】RDB持久化和AOF 持久化

分布式缓存 单点 Redis 的问题 数据丢失(持久化)并发能力不如集群(主从集群、读写分离)Redis宕机导致服务不可用(Redis哨兵)存储能力差(分片集群) Redis 持久化 RDB 持久化 什么…

Game Theory In Competitive Programming|Part2(原创)

在上一个Part部分,我们介绍了Bash game、Nim game、Misere Nim game 这三个游戏的玩法、必胜策略,以及必胜策略的证明,并介绍了有关必胜态以及必败态的两条定理,接下来我们会以Part1为基础,深挖其中的理论。 文章目录 …

期权如何开户的流程是什么样的?

今天期权懂带你了解期权如何开户的流程是什么样的?期权账户开户是指投资者向期权经纪商或金融机构提交申请,以便可以在期权市场上进行交易并持有期权合约的账户开设过程。 期权如何开户的流程是什么样的? 1. 投资者参与营业部提供的股票期权…

【2022 深圳 ArchSummit 】大数据架构稳定性保障实践

文章目录 一、前言二、现状三、大数据架构的历史变迁(一)洪荒期&MR(二)远古期&MPP(四)近现代&Flink/Spark(五)现如今&实时数据湖架构 四、架构稳定的关键因素&#…

经典的设计模式和Python示例(一)

目录 一、工厂模式(Factory Pattern) 二、单例模式(Singleton Pattern) 三、观察者模式(Observer Pattern) 一、工厂模式(Factory Pattern) 工厂模式(Factory Pattern…

我独自升级崛起下载教程 我独自升级崛起一键下载

动作RPG游戏基于广大喜爱的动画和在线漫画《我独自升级崛起》在5月8日,这款新的游戏首次在全球亮相,意在给那些对游戏情有独钟的玩家带来更加丰富和多种多样的游戏体验。这个网络武侠题材的游戏设计非常具有创意,其主要故事围绕着“独孤求败”…

使用CUDA的PyTorch进行张量重整化的gpu加速

使用CUDA的PyTorch进行张量重整化的gpu加速 摘要IntroductionAlgorithm and TorchTrg discussionModels and Results GPU-Acceleration of Tensor Renormalization with PyTorch using CUDA 摘要 作者展示了基于张量重整化群(TRG)方法的数值计算可以通过…

鸿蒙OpenHarmony南向:【Hi3861开发板介绍】

Hi3861开发板介绍 简介 Hi3861开发板是一片大约2cm*5cm大小的开发板,是一款高度集成的2.4GHz WLAN SoC芯片,集成IEEE 802.11b/g/n基带和RF(Radio Frequency)电路。支持,并配套提供开放、易用的开发和调试运行环境。 …

Mysql8本地安装

官网: https://www.mysql.com/ yum安装下载:https://dev.mysql.com/downloads/repo/yum/ 二进制安装下载:https://downloads.mysql.com/archives/community/ 安装包下载 yum安装下载 打开网址(https://dev.mysql.com/downloads/r…

GEE错误——image.reduceRegion is not a function

简介 image.reduceRegion is not a function 这里的主要问题是我们进行地统计分析的时候,我们的作用对象必须是单景影像,而不是影像集合 错误"image.reduceRegion is not a function" 表示你正在尝试使用reduceRegion()函数来处理图像数据&…

VastGaussian:用于大型场景重建的巨大3D高斯函数

VastGaussian:用于大型场景重建的巨大3D高斯函数 摘要IntroductionRelated WorkPreliminariesMethod VastGaussian: Vast 3D Gaussians for Large Scene Reconstruction. 摘要 现有基于NeRF的大型场景重建方法在视觉效果和渲染速度方面往往存在限制。虽然最近的3D高斯分裂在小…

宝兰德通过广东教育行业信创适配认证,拓展教育信创生态圈

近日,由宝兰德自主研发的多款中间件产品通过广东省教育行业信创适配中心的适配测试。测试表明,宝兰德四款中间件产品(分布式缓存软件V3.0、应用服务器软件V9.5、消息中间件软件 V2.1、Web服务器软件V3.1) 与当前主流国产操作系统统…

SpringBoot集成阿里云短信验证码服务

一:前言 最近在项目开发过程中,需要去写一个发送手机短信验证码的功能。在网上查了一下,有很多服务器可供选择,本文的话是基于阿里云服务的短信验证码功能实现。 关于注册和开通服务这些需要操作的,请各位小伙伴参考官…

Flutter开发Dart中的队列(Queue)

文章目录 Dart中的队列(Queue)基本操作示例队列的类型队列的应用总结 Dart中的队列(Queue) 队列是一种抽象的数据结构,遵循“先进先出”(FIFO)的原则。这意味着最早添加的元素将首先被移除。队…