当前位置: 首页 > news >正文

Java基本数据类型

1.概述

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

Java中的数据类型可划分为两种:

1)基本数据类型

基本数据类型是Java语言中数据操作的基础,包括byteshortintlongfloatdoublecharboolean

2)引用数据类型

引用数据类型包括类(class)、接口(interface)、数组。

如果只看文字描述的话,可能没有那么直观,上图自己体会。

那么首先来看看基本数据类型,不同的数据类型有着不同的默认值以及取值范围,既然取值范围不同,其所占用的内存空间也是不同的。来看下表:

数据类型默认值取值范围内存占用
byte0-128127(-2^72^7-1)1字节(8位)
short0-3276832767(-2^152^15-1)2字节(16位)
int0-2,147,483,6482,147,483,647(-2^312^31-1)4字节(32位)
long0L-263~263-18字节(64位)
float(单精度)0.0f1.4E-45~3.4028235E+384字节(32位)
double(双精度)0.0d4.9E-324~1.7976931348623157E+3088字节(64位)
char‘\u0000’‘\u0000’(十进制0)~‘\uFFFF’(十进制65535)2字节(16位)
booleanfalsetrue、false1字节(8位)

2.基本数据类型

通过上面的介绍,相信大家对基本数据类型已经有一个大致的了解,接下来继续详细说明。

2.1 byte

byte类型属于整型,最小值为-128,最大值为127,默认值为0,内存占用为1字节。在编写程序时,如果可以确定变量的取值范围,为了节省空间,可以使用byte来存储数据。代码示例:

byte b1 = -128byte 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,648int 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 它们都只是请求行中的第一个单词,除了语义不同,其实没有本质的区别。 之所以在实际开发中会产生各种区别,主要是因为浏览器的默认行为造成的。 受浏览器的影响&#xf…...

深度学习 李沐报错

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类&#xff0c;在每个 li 选项上添加 .nav-item 类&#xff0c;在每个链接上添加 .nav-link 类: 基本的导航 <div class"container mt-3"><h2>导航</h2><p>简单的水平导航:</p><ul class&…...

Java EE|TCP/IP协议栈之应用层协议DNS详解

文章目录一、对DNS的感性认识简介特点一些常见疑问二、DNSDNS域名结构域名的分级三、域名服务器四、域名解析过程参考一、对DNS的感性认识 简介 DNS&#xff0c;即Domain Name System,是域名系统的简称。它是Internet上解决网上机器命名的一种系统。 TCP/IP中的IP地址是由四…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...