导入
1、数据类型的作用是什么?
不同的数据类型占用空间大小不同,数据类型的作用是指导JVM在运行程序时给该数据分配多大的内存空间。
2、Java中的数据类型包括两种
* 基本数据类型
* 引用数据类型
基本数据类型
1、基本数据类型包括四大类八小类
* 整数型(byte,short,int,long)
* 浮点型(float,double)
* 布尔型(boolean)
* 字符型(char)
注:字符串"abc"不属于基本数据类型,属于引用数据类型。
注:1 Byte = 8 bit 1KB = 1024 Byte 1MB = 1024 KB 1 GB = 1024 MB 1TB = 1024 GB
(1)字符型(char)
* 计算机在任何情况下都只能识别二进制,但是char类型表示的是现实世界的文字,文字和计算机二进制之间在“默认”情况下不存在任何转化关系,此时我们需要进行人为的干涉,需要人负责提前制定好“文字”和“二进制”之间的对照关系,这种对照关系被称为:字符编码。(Java语言源代码采用的是unicode编码方式,所以“标识符”可以用中文。
* 转义字符 \
转义字符出现在特殊字符之前,会将特殊字符转化成普通字符。
例: \n 换行符 \t 制表符 \' 普通的单引号 \"普通的双引号 \\普通的反斜杠
(2)整数型(byte,short,int,long)
* Java语言中的整数型字面值被默认当作int类型来处理。要让这个整数型字面值被当作long类型来处理的话,需要在整数型字面值后面加l/L(建议使用L)。
* Java语言中的整数型字面值有三种表示方法:
- 十进制(是一种缺省默认的方式)
- 八进制(在编写八进制整数型字面值的时候需要以0开始)
- 十六进制(在编写十六进制整数型字面值的时候需要以0x开始)
* 小容量可以自动转化为大容量,称为自动类型转换机制。
* 大容量转换为小容量,需要进行强制类型转换,需要加上“强制类型转换符”(虽然编译通过了,但是运行阶段可能损失精度,所以强制类型转换谨慎使用)
强转原理:将左边的二进制砍掉。
(3)浮点型(float,double)
* 在Java中,所有的浮点型字面值默认被当作double类型来处理,要想该字面值当作float类型来处理,需要在字面值的后面添加F/f。
注:double和float在计算机内部二进制存储的时候,存储的都是近似值。
(4)布尔型(boolean)
* 在Java语言中,boolean类型只有两个值:true、false。
* 在底层存储的时候boolean类型占用一个字节,因为实际存储的时候false的底层是0,true底层是1。
2、基本数据类型之间的转换规则:
* 八种基本数据类型当中除布尔类型之外剩下的7种类型之间都可以互相转换。
* 小容量向大容量转换,称为自动类型转换,容量从小到大排序:
byte < short < int < ong < float < double
char <
注: 任何浮点类型不管占用多少个字节, 都比整数型容量大
char 和 short 可表示的种类数量相同,但是 char 可以取更大的正整数
* 大容量转换成小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,但是在运行阶段可能会损失精度,所以谨慎使用。
* 当整数字面值没有超出 byte , short , char 的取值范围,可以直接赋值给 byte , short ,char类型的变量。
* byte , short ,char混合运算的时候,各自先转换为int类型再做运算。
* 多种数据类型混合运算时,先转换成容量最大的那种类型再做运算。
注:
byte a = 3; 可以编译通过,3 没有超过byte类型的取值范围。
int i = 10;
byte a = i/3; 编译错误,编译器只检查语法,不会“运算”。