在了解数据结构之前需要先了解一下容量单位是怎么回事
bit
是计算机最小的容量单位往上还有 byte
K
M
G
等等,他们之间的单位转换分别是:
1byte
= 8bit
1K
= 1024byte
1M
= 1024K
1G
= 1024M
先有了这个概念,才能明白 Java
的设计者为什么要设计这么多种数据类型
Java数据类型分为两大类, 基本类型和引用类型
基本数据类型又分为三类 分别为
整数类型 字符类型 布尔类型
在Java中每一种数据都定义了明确的数据类型,在内存中分配了不同大小的空间(bytes)
int
类型,声明 long
型常量必须后加 l
或 L
。int
类型,除非不足以表示大数,才使用 long
。bit
计算机中的最小储存单位。byte
计算机中基本储存单元, 1byte
= 8bit
byte 字节类型
short 短整型
int 整型
long 长整型
解释占用空间:
假设我现在分别使用 byte
类型 和 short
类型用来存储整数 5
public class Dateail { public static void main (String[] args) { // 声明变量类型 byte b_num; short s_num; // 给变量赋值 b_num = 5; s_num = 5; } }
在我们看来这是一样的,但是计算机存储这两个数的方式却不一样。
计算机会先把 整数 5
转换为二进制 00000101
存储到对于的储存空间 如图:
它尽管 5
这个数字不需要 2个字节的空间,但是 Java 依旧会按照你指定的类型开辟出相对于的空间存储 5
这是为了防止以后 需要储存的值小于或大于这个类型的存储范围。
注意事项:
Java
整型常量默认是 int
类型 声明 long
类型最好在值后面加上l
或 L
。与整数类型类似,Java浮点类型也有固定的范围和字段长度,不受具体操作系统影响。
Java的浮点类型常量默认为double型,声明float型常量,须后加 f
或 F
浮点类型常量有两种表示形式
十进制数形式:如 5.12 512.0f .512 (必须带有小数点)
科学计数法形式:如 5.12e2 [5.12 * 10^2] 5.12E-2 [5.12 / 10^2]
⭐通常情况下,应该使用double型,因为它比float型更精确。
⭐浮点类型存在陷阱,下面注意事项讲解
浮点数在计算机中的存放方式: 浮点数 = 符号位 + 指数位 + 尾数位
**注意: **
浮点数陷阱:
⭐当我们使用运算结果是小数的数进行相等判断时,要小心
double number1 = 2.7; double number2 = 8.1 / 3; // 得出的结果是 // number1 2.7 // number2 2.6999999999999997
解决方法:
要对运算结果是小数的结果与其他数值进行比对,一个使用这两个数值相减的绝对值取某一精度进行比对。例如:
if (Math.abs(number1 - number2) < 0.000001) { System.out.println("误差值小于0.000001"); }
这样只要误差值小于我们设置的值该条语句就会执行。
浮点数的尾数部分可能丢失,造成精度损失(小数都是近似值)
char
类型占用 2个字节 可存放汉字 ''
括起来的单个字符。例如 char c1 = 'a'
char c2 = '1'
char c3 = '發'
\
来将其后的字符转变为特殊字符型常量。例如 char c1 = '\t'
unicode
码对应的字符。char
赋一个整数,然后输出时,它会按照对应的Unicode
字符输出。char
类型是可以进行运算的,相当于一个整数,因为它都有对应的Unicode
码。重点:
char
在 Java 中的保存与加载顺序:(以字母 a
举例)
保存: 'a'
===> Unicode 码值 97
===> 二进制 1100001
===> 存储
加载: 读取
===> 二进制 1100001
===> Unicode 码值 97
===> 'a'
boolean
只有两种状态 true
false
boolean
类型占用 1 个字节boolean
类型适用于逻辑运算, 一般用于程序流程控制注意:
Java 不可用除了false
和true
之外的任何数字或字符表示 真
或 假
。