(1)概念:
内存空间大小
(2)分类:
1、基本数据类型:基本数据类型的内存存储的是值,基本数据类型不能自定义,使用都是默认的,用于存储简单数据。
根据可以存储数值类型分类,分为
1)整型类型
2)浮点类型
3)布尔类型
4)字符类型
根据可以存储数值大小分类,分为:
1)byte 字节类型 2^8 -128~127
2)short 短整型类型 2^16 占2个字节
3)int 整型类型 2^32 占4个字节
4)long 长整型类型 2^64 占8个字节
5)float 单精度浮点型 占4个字节 float占据空间比long 大
6)double 双精度浮点型 占8个字节 double占据空间比float大
7)bollean 布尔类型 2^1 true/false
8)char 字符类型 2^16 占2个字节,0~65535
2、引用数据类型:
引用数据类型的内存存储的是地址,引用数据类型一般都是自定义,用于存储复杂数据(多个基本数据类型的数据)
为什么float的4个字节比long类型的8个字节的范围大?
因为整数与小数的底层存储有点不同。
相同点:它们都是用二进制存储的
不同点:
小数先转成二进制,然后处理,然后存储。
在处理小数的时候会存在一个偏移量的问题,这会导致float的范围为23位,而long只有19位,所以float比long大
5、字符类型
(1)使用单引号括着的一个字母/数字/任意符号/中文,该值属于字符类型。如’a’,’1’,’?’,’我’,’ ’
(2)每个一个字符都有对应的一个数字来表示,计算机内存存储的就是该数字。由数字转字符称之为解码。由字符转数字称之为编码。
(3)字符和数字之间关系是通过字符编码表来维护的。
ASCII字符编码表中,常用数字,小写字母,大写字母。
数字0~9连续,小写字母az连续,大写字母AZ连续。数字、小写字母和大写字母是不连续的。
ASCII字符编码表只使用1个字节存储数据,只能满足美国人使用,其他国家无法满足。
(4)中国使用的字符编码表,如GBK,GB2312。这些字符编码表称之为国标码。使用2个字节存储数据,英文占1个字节,中文占2个字节数据。
(5)所有国家可以使用字符编码表,如UNICODE。Java中使用就是UNICODE字符编码。使用2个字节存储数据(0~65535)。内存中字符编码表。
(6)所有国家可以使用字符编码表,如UTF-8。使用1~3个字节存储数据,英文占1个字节,中文占3个字节。网络/硬盘上字符编码表。
(7)UNICDE,UTF-8,GBK,GBK2313都兼容ASCII表。
public class Demo6_字符类型 {
public static void main(String[] args) {
char c = 'a';
System.out.println(c);//a
c = '我';
System.out.println(c);
//int i = c + 0;
//由字符转数字的过程,称之为编码
int i = c;
System.out.println(i);//25105
//由数字转字符的过程,称之为解码
int j = 66;
c = (char) j;
System.out.println(c);//B
System.out.println("打印UNICODE字符编码表");
for (int k = 0; k <= 65535; k++) {
System.out.println(k + "..." + (char) k);
}
}
}
6、字符串类型
(1)使用双引号括着的多个字符(数字,中文,字母,特殊符号),该数值就是字符串类型。如”a”,”abc”,”你我他”,” ”,””,”123”,”?%”。
(2)字符串类型不属于基本数据类型,属于引用数据类型。
(3)需要将字符串类型与其他数据类型一起拼接,需要使用”+”
public class Demo7_字符串类型 {
public static void main(String[] args) {
String s = "abc";
System.out.println(s);
s = "你我他";
System.out.println(s);
s = "%&*";
System.out.println(s);
int a = 10;
//将一个字符串类型数据与其他类型数据进行+号运算,实现拼接操作。
System.out.println(s + a);//abc10
}
}