Java - 基础数据类型
前言
直接搬别人的笔记了,只做排版梳理,可能会加一点自己见解
Java的数据类型
- 基础数据类型
- 引用类型:除了基础数据类型剩下都是引用类型
Java 中的几种基本数据类型是什么?
Java 中有 8 种基本数据类型
- 6 种数字类型 :
byte
、short
、int
、long
、float
、double
- 1 种字符类型:
char
- 1 种布尔型:
boolean
位(bit)
是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数
字节(byte)
- 是计算机中 数据处理 的基本单位,习惯上用大写B来表示
- 1Byte(字节) = 8bit(位)
- 1bit 表示1位
- 1024B = 1KB
- 1024KB = 1M
- 1024M = 1G
字符
是指计算机中使用的字母、数字、字和符号
各自占用多少字节呢?
这 8 种基本数据类型的默认值以及所占空间的大小如下:
基本类型 | 位数 | 字节 | 默认值 |
---|---|---|---|
int |
32 | 4 | 0 |
short |
16 | 2 | 0 |
long |
64 | 8 | 0L |
byte |
8 | 1 | 0 |
char |
16 | 2 | 'u0000' |
float |
32 | 4 | 0f |
double |
64 | 8 | 0d |
boolean |
1 | false |
另外,对于 boolean
,官方文档未明确定义,它依赖于 JVM 厂商的具体实现。逻辑上理解是占用 1 位,但是实际中会考虑计算机高效存储因素
基础类型注意点
- Java 里使用
long
类型的数据一定要在数值后面加上 L,否则将作为整型解析 - char a = 'h' char 用单引号, String a = "hello" String 用双引号
- String 不是基础数据类型,是引用类型
整型中 byte、short、int、long 的取值范围
- byte:byte用 1 个字节来存储,范围为 -128(-2^7) 到 127(2^7-1),在变量初始化的时候,byte 类型的默认值为 0
- short:short用 2 个字节存储,范围为-32,768 (-2^15) 到 32,767 (2^15-1),在变量初始化的时候,short 类型的默认值为 0,一般情况下,因为Java本身转型的原因,可以直接写为 0
- int:int用 4 个字节存储,范围为-2,147,483,648 (-2^31) 到 2,147,483,647 (2^31-1),在变量初始化的时候,int 类型的默认值为 0
- long:long用 8 个字节存储,范围为-9,223,372,036,854,775,808 (-2^63) 到 9,223,372,036, 854,775,807 (2^63-1),在变量初始化的时候,long类型的默认值为 0L 或 0l,也可直接写为 0
类型转换
由于 Java 是强类型语言,所有需要有些运算的时候的,需要用到类型转换。
低 --------------------------------------->高
byte, short, char -> int -> long -> float -> double
(小数的优先级高于整数)
- 运算中,不同类型的数据先转换为同一类型,然后进行运算
- 强制类型转换,优先级 高 转 低
- 这个后面专门的文章来讲解
自动类型转换
由低到高直接输入,无需强制转换
转换注意
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,需要强制转换
- 转换的时候可能存在内存溢出,或者精度问题!
各自的对应的包装类是什么?
基本类型 | 包装类型 |
---|---|
int |
Integer |
short |
Short |
long |
Long |
byte |
Byte |
char |
Character |
float |
Float |
double |
Double |
boolean |
Boolean |
基础类型和包装类型注意点
- 包装类型不赋值就是
Null
- 而基本类型有默认值所以不是
Null
单精度、双精度
- 单精度浮点数(float)在计算机存储器中占用 4 个字节(32 bits),利用“浮点”(浮动小数点)的方法,可以表示一个范围很大的数值
- 比起单精度浮点数,双精度浮点数(double)使用 64 位(8字节) 来存储一个浮点数
浮点数拓展
- float; double 不够准确
- 实际过程中浮点数无限且离散的,但是float是有限的,他会自动舍入误差,大约接近,但不等于
- 银行等准确的计算工具最好使用BigDecimal 数学工具类
精确的对账最好完全避免使用浮点数进行比较
精确的对账最好完全避免使用浮点数进行比较
精确的对账最好完全避免使用浮点数进行比较