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地址是由四…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
