【JavaSE基础】基本数据类型族谱及易错点代码分析(下)

简介: 【JavaSE基础】基本数据类型族谱及易错点代码分析

🎨2.short    


              这里将short放到前面讲,是因为它和byte的性质其实差不多,只不过它的取值范围更大一些,但依旧小于int。short也是一个短整型数据类型,它占两个字节,那也就是16个bit位。我们同样通过代码尝试找一下它的最大值。


public static void main(String[] args) {
        String a="0111111111111111";//首位bit用来表示正负
        System.out.println(Integer.parseInt(a,2));//32767
    }


             我们很容易可以看出short可以取得的最大值为32767,当首位bit位为1时则取到-32767。同样要留心像byte一样-0的情况,这时我们定义它的值为-32768。所以short的取值范围为[-32768,32767] 。short的易错点和byte其实一样,当给short赋值一个超出short的取范围时,数默认为int类型,因为short只占16个bit位,int类型占32个,则会舍掉前16个留后16个给short。同样short参与运算时也会升级为int,所以除了取值范围,short和byte的性质差不多。short也可以说是八大基本数据类型可以说是最冷门的一个了。


🎨3.int


         作为最常用的数据类型,int相信是大家最熟悉的基本数据类型了。它占4个字节,也就是32个bit位。这里就不再重复上面步骤。因为是32位,除去一位符号位,在这顺手一提,Java中的基本数据类型中是没有无符号类型的,所以还剩31个bit位表示值。则取值范围为[-2147483648 ~ 2147483647] 。之所以int能成为我们最常用的基本数据类型,就是因为它的取值范围足够我们大多数的场景使用,选太大的long类型占用空间大浪费资源,选太小的short和byte容易溢出,而int的取值范围则恰好合适。


🎨4.long


        long类型属于长整数数据类型,它占8个字节,也就是64个bit位。所以它的取值范围为[-9223372036854774808 ~ 9223372036854774807]。可以看出这个数是非常大的,但是因为太占内存,我们很少使用它。通常在运算时可能超出int类型造成溢出,我们才会使用long类型。如果直接给long类型赋值时,我们需要注意在末尾加上L或l,这是为什么呢?我们来用代码看看


image.png


    发现没,我特意举的这个例子,当数在int范围内它没有报错,当超过int了它居然说整数过大?我long类型最大能取9223372036854774807你居然敢说我过大?难道你把我当成int了?你还真别说,JVM真把你当成int了,因为Java中整数类型都默认为int,你这是一个超过int类型的数它当然会提示过大。所以我们最好养成习惯,在给long类型赋值时,最好在末尾加上个L,告诉JVM我这是个long类型的值。


image.png


🎨5.char


        char类型属于字符类型,也是我们用的比较多的类型。它的存储占2个字节,也就是16个bit位,和short一样,那取值范围一样吗?当然不一样啦!char是取不了负号的,所以它不需要用1个bit位来表示正负,所以它的取值范围是[0,65535]。有的人肯定纳闷了,诶不对啊,char不是字符类型吗?那不是应该是什么a啊b啊这种字符吗?这就涉及到ACSII表了,我们的每个字符都可以用一个整数去表示,所以当你赋值一个合法范围内的整数,它就会自动转换为对于的字符,具体是什么字符就要去记一下ACSII表了


char a=97;
        char b=98;
        System.out.println(a);//a
        System.out.println(b);//b


       如上图,97对于的为字符'a',98对于的为字符'b'。所以大家这里记住,26个小写的字母对应的ACSII表是从[97,122]。


      这里也要注意,char参与运算时,也是会升级为int类型,这里我们在前面提过,如果这时我们将结果赋值给char就会无法通过编译,需要进行强转。  就像如图报错,大家要注意这个细节。


image.png


       当我们给char类型赋值一个超出取值范围的整数时,编译器此时会报错,这时我们需要进行强转。因为int是32位bit,char只有16位,所以char只会取int的后16位,然后转化为对于的字符。


🎨6.float


       float是浮点数类型中的单精度,在计算机中占用4个字节,也就是32个bit位,有效的位数为7位,浮点数类型也就是我们的小数类型。通常我们在给float赋值时,因为在其末尾加上f,以告知jvm我们这是float类型,我们直接给一个小数赋值,它会出现下面这种情况。


image.png


     这是为什么呢?在整数类型中,我们默认的类型为int,而在浮点数类型中我们默认的类型为double。你给float赋值一个double当然会报错,这时就需要你进行强转,这时就会有损失精度的可能性。那为什么可以给float赋值一个int类型的值呢?虽然float虽然和int一样都占4个字节,但浮点数类型是比整数类型更大的,所以我们给float赋值int类型是可以的,它会自动加上小数部分,当给int赋值float时则会报错,需要强转,强转后所有的小数部分都会丢失。  


image.png


🎨7.double


       double是Java中基本数据类型中浮点数类型的默认类型。它占八个字节,和long一样,开销还是比较大的,它是双精度。很多人好奇双精度和单精度有什么区别?其实也就是范围的问题,double有效的位数为16位。浮点数的使用唯一要记住的就是,能尽量使用float就float,因为double实在太占内存,而且运行速度慢于float。double赋值给float需要进行强转,即使有可能输出的值并未改变。


image.png


     double也是除去boolean类型里最大的数据类型,它可以强转为其余六种数据类型,不过当然会有精度的损失,将这六种数据类型赋值给double它都可以接收。


image.png


🎨8.boolean


       作为八大基本数据类型最特殊的一种,boolean显得有些格格不入。它只占一个字节,因为它只有两种取值,boolean和false。这里需要提醒大家的是,C语言中可以用0和非0分别代表false和true,但这在Java中是不允许的。boolean类型也不可以接收其他基本数据类型的值,其他的基本类型也不可以强转为Boolean。


🎃2.小剧场解答


答案选B。


       产生精度丢失只会出现在强转的情况下,也就是大的数据类型转为小的,在这里只有B选项产生了强转,由float转为int。


相关文章
|
7天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
6天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
315 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
18天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1330 8
|
5天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。
|
17天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1409 87
|
6天前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
312 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
5天前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
6天前
|
弹性计算 安全 数据安全/隐私保护
2025年阿里云域名备案流程(新手图文详细流程)
本文图文详解阿里云账号注册、服务器租赁、域名购买及备案全流程,涵盖企业实名认证、信息模板创建、域名备案提交与管局审核等关键步骤,助您快速完成网站上线前的准备工作。
252 82
2025年阿里云域名备案流程(新手图文详细流程)