【java基础复习】如何理解java中基本数据类型里的自动类型提升和强制类型转换?

news2024/12/23 5:23:06

  • 自动类型提升
  • 强制类型转换
  • 注意事项 ❗
  • 感谢 💖

Java是一种强类型语言,这意味着在编写代码时,需要明确指定每个变量的数据类型。我们知道,java中有八大基本数据类型。分别是:

数据类型大小(字节数)范围
byte1字节-128 到 127
short2字节-32,768 到 32,767
int4字节-2,147,483,648 到 2,147,483,647
long8字节-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
float4字节大约 ±3.40282347 x 10^38(7位有效数字)
double8字节大约 ±1.7976931348623157 x 10^308(15位有效数字)
char2字节0 到 65,535(Unicode字符)
boolean不定(通常1比特位)true 或 false

在实际编程中,我们常常需要在不同的数据类型之间进行转换。Java提供了两种主要的数据类型转换方式:自动类型提升强制类型转换

注意:这里的数据类型转换只涉及七种基本数据类型之间的转换,不包含boolean类型的。

自动类型提升

自动类型提升是Java中的一种隐式类型转换。它会自动将容量(精度)小的数据类型提升为容量(精度)大的数据类型。

注意:这里的容量(精度)大小指的是数据类型可表示的数据的范围的大小而不是内存大小。比如float虽然是4字节的,long是8字节的,但是float的容量(精度)大于long的容量(精度),即float的数据范围大于long的数据范围。

七种数据类型的容量(精度)大小排序如下:

byte、char、short –> int –> long –>float –> double

需要注意,所有的byte、short和char类型都会自动提升为int类型。

让我们来看几个示例:

在这里插入图片描述

可以看到,我们byte类型的变量b1和short类型的变量s1在做运算时,它们的结果不能是short类型,而自动提升为int类型。

在这里插入图片描述

可以看到,int类型的变量和long类型的变量做运算时,它们的结果自动提升为两者中较大的long类型。

在这里插入图片描述

同理,在上面的演示中,long类型的变量和float类型的变量做运算时,它们的结果自动提升为较大的float类型。

强制类型转换

与自动类型提升相反,强制类型转换通常用于将高精度(高容量)的数据类型转换为低精度(低容量)的数据类型。但需要注意潜在的数据精度的损失。

强制类型转换需要程序员明确指定要进行的转换,并使用圆括号将目标数据类型括起来。

让我们来看几个示例:

在这里插入图片描述

在上面的示例中,l1和f1的运算结果是float类型的,如果要转换为低精度的long类型,需要手动实现强制类型转换。

在这里插入图片描述

在上面的示例中,从double到Int的类型转换就导致了小数部分的精度损失。

注意事项 ❗

  • 有一个点需要格外注意。在java中,常量或者说是字面量的默认数据类型是Int(如果是整型)和double(如果是浮点型)。

    示例:
    在这里插入图片描述

  • 自动类型提升是隐式的,而强制类型转换是显式的。强制类型转换提供了更大的控制力,但也需要更多的注意和谨慎

  • 强制类型转换可能导致数据损失。因此,应该仔细考虑何时使用它,确保不会丢失重要的信息

  • 还有一个小细节,给long类型数据变量赋值时,最好养成加 L(l) 后缀的习惯,如果不加L,在数据的大小不超过int数据类型范围的时候是OK的,一旦超过了,那么不加L就会出现编译失败这个错误。

    在给float类型数据变量赋值时,必须要添加 F(f) 后缀,否则一定会报错!

感谢 💖

好啦,这次的分享就到这里,感谢大家看到这里🤞

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

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

相关文章

2024年java面试--多线程(4)

系列文章目录 2024年java面试(一)–spring篇2024年java面试(二)–spring篇2024年java面试(三)–spring篇2024年java面试(四)–spring篇2024年java面试–集合篇2024年java面试–redi…

BCSP-玄子Share-Java框基础_双系统Redis安装与基础语法

四、Redis 4.1 Redis 简介 Redis 是开源、高性能的key-value数据库,属于 NoSQL 数据库 NoSQL 数据库与关系型数据库 关系型数据库:采用关系模型来组织数据,主要用于存储格式化的数据结构NoSQL 数据库:泛指非关系型数据库&…

力扣|找出和所对应的两数的下标

从零开始刷力扣(bushi 题目放在这: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值target的两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一…

数电发票开票接口

全电发票,也叫数电发票,全称为全面数字化的电子发票。数电发票是依托可信身份体系和电子发票服务平台;以去介质、去版式、标签化、要素化、授信制、赋码制为基本特征;覆盖全领域、全环节、全要素的全新发票。与纸质发票具有同等法…

tkinter控件样式

文章目录 以按钮为例共有参数动态属性 tkinter系列: GUI初步💎布局💎绑定变量💎绑定事件💎消息框💎文件对话框💎控件样式扫雷小游戏💎强行表白神器 以按钮为例 tkinter对控件的诸…

05-Redis

1、Redis为什么快? 1、纯内存操作 2、单线程可以省去多线程时CPU上下文会切换的时间 3、渐进式ReHash、缓存时间戳 数组需要扩容的时候,他会维护两张hash表,比如第一张的数组长度为6,另一张的数组长度为12,在set和g…

JavaScript中的事件循环(event loop)机制

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 调用栈(Call Stack)⭐ 消息队列(Message Queue)⭐ 事件循环(Event Loop)⭐ 宏任务和微任务⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇…

如何取消KEIL-MDK工程中出现的CMSIS绿色图标

如何取消KEIL-MDK工程中出现的CMSIS绿色图标?我以前经常遇到,不知道怎么搞,好像也不影响编译结果。以前问过其他人,但是不知道怎么搞,相信很多人也遇到过。水平有限,表达不清楚,见下图&#xff…

Java 反射调用自己写的对象方法

一、java 反射的定义 定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法,这种动态获取、调用对象方法的功能称为java语言的…

JavaScript 中的原型到底该如何理解?

JavaScript作为一个基于原型的OOP,和我们熟知的基于类的面向对象编程语言有很大的差异。如果不理解其中的本质含义,则无法深入理解JavaScript的诸多特性,以及由此产生的诸多“坑”。在讨论“原型”的概念之前,我们先来讨论一下“类…

APS系统设计经验分享(时间推导II - 2023.09)

在前一篇关于APS系统设计分享文章(《APS系统设计经验分享(时间推导 - 2023.03)》)中,我们提到将会分享使用OptaPlanner作为规划引擎开发APS系统过程中,遇到的一些时间相关的设计建议与异常情况分析。后来一直忙于项目工作,直到现在才想起仍欠…

CSS---flex布局

主要记录flex布局的要点以及实例 flex flex父标签的6个属性flex-direction: flex布局的方向flex-wrap: 是否可以换行flex-flow: flex-direction 和 flex-wrap 一起写justify-content:横向对齐方式align-items: 纵向对齐方式align-content: 有换行情况下的纵向对齐方…

DR IP-SoC China 2023 Day演讲预告 | 龙智Perforce专家解析芯片开发中的数字资产管理

2023年9月6日(周三),龙智即将亮相于上海举行的D&R IP-SoC China 2023 Day,呈现集成了Perforce与Atlassian产品的芯片开发解决方案,助力企业更好、更快地进行芯片开发。 D&R IP-SoC China 2023 Day 是中国首个…

[论文笔记]ESIM

引言 这是经典论文Enhanced LSTM for Natural Language Inference的笔记。 本篇论文文是建立在自然语言推理(Natural Language Inference,NLI)任务上的。提出了简单的通过基于LSTM的序列推理模型效果到达了当时的SOTA水平。同时基于该模型,在局部推理建模层和推理组合层使用了…

三维模型OBJ格式轻量化压缩在大规模场景的加载和渲染的作用分析

三维模型OBJ格式轻量化压缩在大规模场景的加载和渲染的作用分析 OBJ格式是一种常用的三维模型文件格式,它存储了三维模型的几何信息和纹理坐标等相关属性。在大规模场景中加载和渲染三维模型时,OBJ格式的轻量化压缩对于提高性能和效率起到了重要的作用。…

Java多线程(Thread)详解之启动与中断

在我的前一篇博客中直接介绍了Thread的”五种“打开方式:Thread的”五种“打开方式https://blog.csdn.net/qq_45875349/article/details/132644717?spm1001.2014.3001.5501 但是还没有详细的对Thread类进行说明,这篇博客主要对Thread类进行介绍&#x…

软件产品选型测试POC测试怎么做?

软件poc测试 一、基本概述 软件选型测试是在软件采购的前提或采购过程中,通过对待选软件进行测试比对,筛选出适合的软件。通过对候选的软件进行量化或非量化的横向比对测试,为建设单位选择产品、供货方参加投标提供较直接的依据。 二、测试…

现在的校招面试,管你是不是应届生

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!😄 一、他,上来打我! 【字节】除了MQ解耦发奖,是否还有比MQ更优的解决方案?【字节】…

算法通关村16关 | 堆与滑动窗口问题结合

1. 堆与滑动窗口问题结合 题目 LeetCode239 给你一个整数数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧,你可以看到在滑动窗口内的k个数字,滑动窗口每次只向右移动一位,返回滑动窗口中的最大值。 思路 对于…

css 文字单行多行超出长度后显示 ...

0.超出… 1、单行文本超出 <div class"content">测试数据&#xff1a;css单行文本超出显示省略号--------</div><style> .content{width: 200px;height: 200px;overflow:hidden;white-space: nowrap;text-overflow: ellipsis;-o-text-overflow:el…