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

深入解析:Java基础(二):八种基本数据类型详解

深入解析:Java基础(二):八种基本数据类型详解

Java基础系列文章

Java基础(一):发展史、技术体系与JDK环境配置详解

Java基础(二):八种基本数据类型详解


一、比特(bit)和字节(Byte)

1、定义与换算关系

单位缩写大小
1 字节1 Byte (B)8 bit (b)
1 千字节1 KB1024 Bytes
1 兆字节1 MB1024 KB
1 吉字节1 GB1024 MB
1 太字节1 TB1024 GB

2、应用场景差异

二、各类型详解

在这里插入图片描述

1、整数类型:byte、short、int、long

类型位数取值范围默认值包装类
byte8-27 ~ 27-1(-128~1270Byte
short16-215 ~ 215-1(-32768 ~ 32767)0Short
int32-231 ~ 231-1(约21亿多0Integer
long64-263 ~ 263-1(-9223372036854775808 ~ 9223372036854775807)0LLong

不同整数类型的存储空间和表示数值的范围:

不同整数类型的存储空间和表示数值的范围

2、浮点类型:float、double

类型位数取值范围精度默认值包装类
float32约±3.4e38( ± 3.4 × 10 38 ±3.4 \times 10^{38} ±3.4×1038约 6~7 位十进制有效数字0.0fFloat
double64约±1.7e308( ± 1.7 × 10 308 ±1.7 \times 10^{308} ±1.7×10308约 15~16 位十进制有效数字0.0dDouble

关于精度举例说明:

float f = 0.123456789f
;
double d = 0.123456789123456789
;
System.out.println(f)
;
// 输出:0.12345679(只有前 7 位是可靠的)
System.out.println(d)
;
// 输出:0.12345678912345678(保留了更多有效数字)

关于浮点型精度的说明:

  • 并不是所有的小数都能可以精确的用二进制浮点数表示
  • 二进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂

3、字符类型:char

类型位数取值范围默认值包装类
char160 ~ 65535(Unicode)‘\u0000’Character
char c12 = 'a'
;
// ASCII对应数字97
char c13 = 65
;
// 这里就是ascii码65,对应字符A
System.out.println(c12+c13)
;
// 97+65=162

3.1、字符字面量(最常见)

//使用一对''表示,内部有且仅有一个字符
char c1 = 'a'
;
char c2 = '中'
;
char c3 = '1'
;
char c4 = '%'
;
char c5 = 'γ'
;
//编译不通过
//char c6 = '';
//char c7 = 'ab';

3.2、 Unicode转义表示(\uXXXX 格式)

在这里插入图片描述

3.3、 转义字符

转义字符说明Unicode表示方式
\n换行符\u000a
\t制表符\u0009
\"双引号\u0022
\'单引号\u0027
\\反斜线\u005c
\b退格符\u0008
\r回车符\u000d

3.4、 整数转换

char c = 65
;
// ASCII 码 65 对应 'A'
System.out.println(c)
;
// 输出: A
char ch = 0x4F60
;
// 十六进制 Unicode 表示 '你'
System.out.println(ch)
;
// 输出: 你

在这里插入图片描述

4、布尔类型:boolean

类型位数取值范围默认值包装类
boolean1true/falsefalseBoolean

Java 语言规范未强制规定 boolean 的大小,仅表示其表示 1 位信息,具体实现由虚拟机决定。这导致不同 JVM 的差异:

三、基本数据类型转换

1、自动类型转换(隐式转换)

示例:

int a = 10
;
long b = a;
// 自动转换:int → long
double c = b;
// 自动转换:long → double
int x = 5
;
double y = x + 3.14
;
// 结果为 double 类型
char ch = 'A'
;
int code = ch;
// 自动转换:char → int(输出 Unicode 值 65)

2、强制类型转换(显式转换)

精度丢失示例:

double d = 123.456
;
int i = (
int
) d;
// 强制转换:double → int(结果为123,精度丢失)

精度溢出示例:

  • 溢出是指一个数值超出了该数据类型所能表示的范围,导致结果不正确甚至反方向回绕
  • 想象你有一个 3 位的计数器,只能表示 0 到 999,如果你加到 1000,它就回到了 000——这就是溢出
byte b = 127
;
// byte 的最大值是 127
b = (
byte
)(b + 1
)
;
// 加1后会溢出,结果是 -128
long l = 3000000000L
;
int j = (
int
) l;
// 强制转换:long → int(溢出,结果为-1294967296)

3、不同数据类型运算

byte, short, char 运算 ➜ 自动变成 int

byte a = 10
;
byte b = 20
;
// byte c = a + b; // 编译错误:结果是 int
int c = a + b;
// 正确
//byte、short之间做运算
byte b3 = 12
;
short s1 = 10
;
//short s2 = b3 + s1; // 编译不通过 需要用int来接收
int i4 = b3 + s1;
// 正确

int 与 long 运算 ➜ 提升为 long

int i = 1000
;
long l = 2000L
;
long result = i + l;
// i 自动转为 long

int 与 float 运算 ➜ 提升为 float

int i = 5
;
float f = 2.5f
;
float res = i + f;
// i 转为 float,结果是 7.5

float 与 double 运算 ➜ 提升为 double

float f = 3.5f
;
double d = 1.2
;
double res = f + d;
// f 转为 double,结果是 4.7
http://www.hskmm.com/?act=detail&tid=24691

相关文章:

  • 物理_备忘
  • 越秀凭一己之力打破了行业天花板 - 智慧园区
  • 在AI技术唾手可得的时代,挖掘JavaScript学习资源的新需求成为关键
  • 洛谷P9676 [ICPC 2022 Jinan R] Skills
  • 读人形机器人31未来30年
  • 【java面试】redis篇 - 指南
  • 洛谷P8421 [THUPC 2022 决赛] rsraogps
  • NLP学习路线图(十四):词袋模型(Bag of Words) - 详解
  • 实用指南:苍茫命令行:linux模拟实现,书写微型bash
  • 2025 年压滤机厂家最新推荐排行榜:隔膜压滤机,污泥压滤机,真空压滤机,板框压滤机,带式压滤机优质企业权威评选及选购指南
  • 2025 年搅拌器厂家最新推荐排行榜:涵盖立式、不锈钢、侧入式等多类型设备,深度解析实力厂商
  • 2025 年最新推荐承烧板厂家排行榜:筛选优质企业,破解采购难题,赋能高温工业生产
  • 一文看懂AI SoC芯片
  • 月球尘埃电解技术实现资源就地利用
  • 漏洞赏金计划公开后的三个阶段与应对策略
  • Python 在科学计算与工程模拟中的应用
  • Python 在大数据与分布式计算中的应用
  • Python 在教育与科研中的应用与价值
  • Python 在自动化测试与质量保障中的应用
  • 玩转树莓派屏幕之三:lvgl移植到树莓派
  • enthalpy/entropy
  • Day26自定义异常
  • 谈谈redis的热key问题如何解决
  • Stimulsoft 引入无代码脚本编程 —— Blockly 让报表与仪表盘更智能
  • 理解、学习与使用 Java 中的 Optional
  • 211 粉了整个小 QA 吧
  • 玩转树莓派屏幕之二:自定义屏幕显示
  • INFINI Labs 产品更新 - Coco AI v0.8 与 Easysearch v1.15 全新功能上线,AI 搜索体验再进化!
  • 玩转树莓派屏幕之一:LCD屏幕显示
  • Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测