Java基本数据类型
1.概述
佛说,大千世界,无奇不有。在这个世界里,物种的多样性,遍地开花,同样,在Java的世界里,也有着异曲同工之妙,Java秉承面向对象的特性,必然少不了区分对象的类型,就像下图的“CuteCat”,它描述着在现实世界中存在的事物,同时也是今天我们要说的Java数据类型。

Java中的数据类型可划分为两种:
1)基本数据类型
基本数据类型是Java语言中数据操作的基础,包括
byte、short、int、long、float、double、char、boolean。
2)引用数据类型
引用数据类型包括类(class)、接口(interface)、数组。
如果只看文字描述的话,可能没有那么直观,上图自己体会。

那么首先来看看基本数据类型,不同的数据类型有着不同的默认值以及取值范围,既然取值范围不同,其所占用的内存空间也是不同的。来看下表:
| 数据类型 | 默认值 | 取值范围 | 内存占用 |
|---|---|---|---|
| byte | 0 | -128127(-2^72^7-1) | 1字节(8位) |
| short | 0 | -3276832767(-2^152^15-1) | 2字节(16位) |
| int | 0 | -2,147,483,6482,147,483,647(-2^312^31-1) | 4字节(32位) |
| long | 0L | -263~263-1 | 8字节(64位) |
| float(单精度) | 0.0f | 1.4E-45~3.4028235E+38 | 4字节(32位) |
| double(双精度) | 0.0d | 4.9E-324~1.7976931348623157E+308 | 8字节(64位) |
| char | ‘\u0000’ | ‘\u0000’(十进制0)~‘\uFFFF’(十进制65535) | 2字节(16位) |
| boolean | false | true、false | 1字节(8位) |
2.基本数据类型
通过上面的介绍,相信大家对基本数据类型已经有一个大致的了解,接下来继续详细说明。
2.1 byte
byte类型属于整型,最小值为-128,最大值为127,默认值为0,内存占用为1字节。在编写程序时,如果可以确定变量的取值范围,为了节省空间,可以使用byte来存储数据。代码示例:
byte b1 = -128;
byte b2 = 127;
2.2 short
short类型属于整型,最小值为-32768,最大值为32767,默认值为0,内存占用为2字节。代码示例:
short s1 = -32768;
short s2 = 32767;
2.3 int
int类型属于整型,最小值为-2,147,483,648,最大值为2,147,483,647,默认值为0,内存占用为4字节。代码示例:
int i1 = -2,147,483,648;
int i2 = 2,147,483,647;
2.4 long
long类型属于整型,最小值为-9,223,372,036,854,775,808,最大值为-9,223,372,036,854,775,807,默认值为0,内存占用为8字节。代码示例:
long l1 = -9,223,372,036,854,775,808;
long l2 = 9,223,372,036,854,775,807;
2.5 float
float类型属于单精度浮点型,小数点有效位数为7位,最小值为1.4E-45,最大值为3.4028235E+38,默认值为0.0f,内存占用为4字节。示例代码:
float f = 1.1f;
2.6 double
double类型属于双精度浮点型,小数点的有效位数为16位,最小值为4.9E-324,最大值为1.7976931348623157E+308,默认值为0.0,内存占用为8字节。
double d = 1.1;
2.7 char
char类型可以表示一个16位的Unicode字符,最大值为’\uFFFF’(十进制65535),最小值为’\u0000’(十进制0),内存占用为2字节。代码示例:
char c = 'A';
**Tips:**编码类型不同,一个字符所在的内存空间也就不同。
-
ASCII编码:一个英文字符占一个字节,一个中文字符占两个字节。
-
Unicode编码:一个英文字符和一个中文字符占都两个字节。
-
utf8编码:一个英文字符占一个字节,一个中文字符占三个字节。
2.8 boolean
boolean类型的值分别为true、false,通常用于条件判断。代码示例:
boolean flag = true;
3.基本数据类型转换
3.1 为什么需要类型转换
类型转换?为什么Java基本数据类型之间会涉及到类型转换呢?
试想一下在现实世界中,如果将一个苹果和一个梨拿来比较,由于苹果和梨是两个不同的类型,自然是无法进行比较的。同理,Java是强类型语言,所以要求在执行赋值运算和算术运算的时候,参与运算的数据类型必须保持一致。
3.2 哪些基本数据类型可以相互转换
除了boolean类型,其余的数据类型在内存中存储的都是数值,因此,除了Boolean类型,其余的数据类型之间都可以相互转换。
3.3 类型转换方式
- 隐式类型转换
取值范围小的数据类型向取值范围大的数据类型转换时,可以自动转换,也叫隐式类型转换,有种大鱼吃小鱼的感觉。示例代码:
byte b =127;
short s = b;
int i = s;
long l = i;
float f = l;
double d = f;
如果是进行算数运算,也会进行类型自定转换:
1、如果其中一个数是double类型,其余的数也会转换为double类型。
2、如果其中一个数是float类型,其余的数也会转换为float类型。
3、如果其中一个数是long类型,其余的数也会转换为long类型。

我们再来看看这几种基本类型之间的隐式转换关系,实线表示无精度丢失,虚线表示可能会出现精度丢失。比如1234567890是一个10位的int类型的整数,它包含的位数比float类型所能够表达的位数多,在进行转换时就会出现精度丢失。
- 强制类型转换
取值范围大的数据类型向取值范围小的数据类型转换时,无法进行自动转换,需要我们为其指定显式的类型转换。进行强制类型转换容易造成数据异常,就像小鱼吃大鱼一样,如果硬把大鱼塞给小鱼吃,那必然是对小鱼的巨大破坏。代码示例:
long l = 9223372036854775807L;
int i = (int) l;// i的值为-1。
**Tips:**整型之间的隐式转换不会出现精度的丢失,整型和浮点型之间的类型转换可能会出现精度丢失。
相关文章:
Java基本数据类型
1.概述 佛说,大千世界,无奇不有。在这个世界里,物种的多样性,遍地开花,同样,在Java的世界里,也有着异曲同工之妙,Java秉承面向对象的特性,必然少不了区分对象的类型&…...
English Learning - L2 语音作业打卡 Day2 2023.2.22 周三
English Learning - L2 语音作业打卡 Day2 2023.2.22 周三💌 发音小贴士:💌 当日目标音发音规则/技巧:🍭 Part 1【热身练习】🍭 Part2【练习内容】🍭【练习感受】🍓元音[ ɑː ]&…...
45. 跳跃游戏 II
题目: 45. 跳跃游戏 II难度中等1974收藏分享切换为英文接收动态反馈给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 num…...
应届生Java面试50题线程篇(含解析)
什么是线程? 答:线程是操作系统能够进行运算调度的最小单位,是程序执行流的最小单元。在Java中,可以通过实现Runnable接口或继承Thread类来创建线程。 创建线程的方式有哪些?各自的优缺点是什么? 继承 Thread 类&…...
【数据库】第七章 数据库设计
第七章数据库设计 数据库设计概述 数据库设计的基本步骤 需求分析概念结构设计逻辑结构设计物理结构设计数据库实施数据库运行和维护 需求分析 收集需求,理解需求 收集各个角色的需求 概念数据库设计 建立概念模型 ,E-R图/IDEF1x图 消除冲突&…...
Burp Suite 常用模块简介
Burp Suite 常用模块分为 目标站点(target)模块 代理(proxy)模块 攻击(Intruder)模块 重放(Repeater) 模块 Target模块是对站点资源的收集,与站点各资源包发出和相应包的记录 Proxy模块是核心模块,可以拦截数据包发送往浏览器,进行修改后再…...
QML Item和Rectangle详解
1.Item和Rectangle Item类型是Qt Quick中所有可视项的基本类型。 Qt Quick中的所有可视项都继承Item。尽管Item对象没有视觉外观,但它定义了视觉项中常见的所有属性,例如x和y位置、宽度和高度、锚定和键处理支持。 Rectangle继承自Item,多…...
常见前端基础面试题(HTML,CSS,JS)(六)
GET 和 POST 的区别 从 http 协议的角度来说,GET 和 POST 它们都只是请求行中的第一个单词,除了语义不同,其实没有本质的区别。 之所以在实际开发中会产生各种区别,主要是因为浏览器的默认行为造成的。 受浏览器的影响…...
深度学习 李沐报错
3.6. softmax回归的从零开始实现 — 动手学深度学习 2.0.0 documentation softmax从0开始实现 函数执行需要加main指定 改成这样 if __name__"__main__":print(evaluate_accuracy(net, test_iter)) 不然会这样出错 RuntimeError: An attempt has been m…...
【JAVA程序设计】(C00104)基于Springboot的家庭理财管理系统——有文档
基于Springboot的家庭理财管理系统项目简介项目获取开发环境项目技术运行截图运行视频项目简介 基于Springboot开发的家庭理财管理系统设计与实现共分为三个角色:系统管理员、家庭管理员、家庭用户 管理员角色包含以下功能: 用户管理、修改密码、角色管…...
【第五章 AOP概述,底层原理,AOP术语,切入点表达式,AOP操作(基于注解方式,基于xml配置文件)】
第五章 AOP概述,底层原理,AOP术语,切入点表达式,AOP操作(基于注解方式,基于xml配置文件) 1.AOP概述: (1)什么是AOP: ①面向切面编程(…...
面试官: 你知道 JWT、JWE、JWS 、JWK嘛?
想起了 之前做过的 很多 登录授权 的项目 它相比原先的session、cookie来说,更快更安全,跨域也不再是问题,更关键的是更加优雅 ,所以今天总结了一篇文章来介绍他 JWT 指JSON Web Token,如果在项目中通过 jjwt 来支持 J…...
基于企业微信应用消息的每日早安推送
基于企业微信应用消息的每日早安推送 第一步:注册企业微信 企业微信注册地址:https://work.weixin.qq.com/wework_admin/register_wx 按照正常流程填写信息即可,个人也可以注册企业微信,不需要公司 注册完成后,登录…...
【数字IC基础】黑盒验证、白盒验证、 灰盒验证
文章目录 一、黑盒验证二、白盒验证三、灰盒验证一、黑盒验证 1、黑盒验证:大多数基于仿真的验证环境都是黑盒验证;2、不需要知道设计的内部结构和特性,只需要在输入端口打激励,观察输出即可;3、验证工程师学习设计的规格,然后编写验证环境中的 drivers, monitors, check…...
管理的本质是达成目标
“没有目标,其实就没有管理学存在的意义。要有效地使用管理学的智慧,首先要建立清晰的目标。” - 《宁向东的管理学课》 起源 最近开始刷很久之前就在得到上买了的已经起灰了的课程,看到这句话觉得很有道理。 思考 这里面有一个很重要的词…...
【数字IC基础】IC(Integrated Circuit,集成电路)常用缩写
文章目录 1、集成电路:2、数字IC设计相关步骤:3、数字设计相关概念:4、验证相关:5、语言类:6、IC设计相关工具:7、存储器相关:8、总线协议类:9、文件格式类:10、标准和规范:11、其它:1、集成电路: 缩写全称中文翻译LSILarge-scale intergrated circuit大规模集成电…...
JavaScript 高级1 :面向对象
JavaScript 高级1 :面向对象 Date: January 16, 2023 Text: 面向对象、ES6中类和对象、类的继承、面向对象案例 目标: 能够说出什么是面向对象 能够说出类和对象的关系 能够使用 class 创建自定义类型 能够说出什么是继承 面向对象编程介绍 面向过…...
C语言结构体对齐
1. 结构体对齐 要点 变量只能存储在他的长度的整数倍地址上结构体整体对齐跟他的最长的字段整数倍对齐 栗子1 struct Example1 {char a; //1个字节int c; //4个字节short b; //2个字节 };std::cout << sizeof(Example1 ) << std::endl; // 12 std::cout &…...
Bootstrap系列之导航
Bootstrap导航 可以在 ul 元素上添加 .nav类,在每个 li 选项上添加 .nav-item 类,在每个链接上添加 .nav-link 类: 基本的导航 <div class"container mt-3"><h2>导航</h2><p>简单的水平导航:</p><ul class&…...
Java EE|TCP/IP协议栈之应用层协议DNS详解
文章目录一、对DNS的感性认识简介特点一些常见疑问二、DNSDNS域名结构域名的分级三、域名服务器四、域名解析过程参考一、对DNS的感性认识 简介 DNS,即Domain Name System,是域名系统的简称。它是Internet上解决网上机器命名的一种系统。 TCP/IP中的IP地址是由四…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
