Java是强类型编程语言,每种数据都有其明确的数据类型,在内存中分配不同大小的内存空间。
Java中的数据类型分为两大类(基础数据类型、引用数据类型)。
https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.2
1.基础数据类型primitive type,共8种
1.1 字节byte:字节byte,在计算机中表示一个完整的字符(美国所有英文字符、标点、符号等)。UTF-8 和 UTF-16 都是 Unicode 字符编码的实现方式,UTF-8
是可变长度的编码,而 UTF-16 是定长的编码。
ASCII码:一个英文字母等于一个字节byte,一个中文汉字两个字节byte; UTF-8编码:一个英文字母等于一个字节byte,一个中文汉字三个字节byte;
UTF-16编码:一个英文字母等于两个字节byte,一个中文汉字两个字节byte。
1.2 位bit:计算机中的最小单位(二进制01010100),1bit就是01010100中的一个二进制位。
1字节byte = 8位bit
1.3 基础数据类型primitive type介绍
a.整型 byte、short、int、long(整型默认int)
byte:1个byte大小,8bit(8x1=8)。最小整数类型,取值范围-27~27-1及-128~127
short:短整型,2个byte大小,16bit。取值范围-215~215-1及-32768~32767
int:4个byte大小,32bit。取值范围-231~231-1
long:8个byte大小,64bit。取值范围-263~263-1
b.浮点型 float、double(不加F或者f,默认是double类型)
float:单精度浮点类型,4个byte大小,32bit
double:双精度浮点类型,8个byte大小,64bit
c.字符型 char 默认'\u0000',表示一个空字符;
and char, whose values are 16-bit unsigned integers representing UTF-16 code units
and whose default value is the null code point ('\u0000')
2个byte大小,16bit,取值范围'\u0000' to '\uffff',即0 to 65535
Java默认16位bit Unicode字符(UTF-16)编码;Java中一个汉字通常占2个byte。
d.布尔型 boolean 默认false
1个byte大小,8bit。
2个值:true、false。整型和布尔型不能相互转换。
boolean a = 1; // error
注:不同基础数据类型进行运算时,要注意类型提升和精度丢失的问题。
2.引用数据类型 类、接口、数组、枚举等
引用在内存中占4个字节(存储内存地址)。
在计算机的发展历史上,32位处理器曾经是主流,因此,很多编程语言和操作系统都选择了32位整数作为基本的整数类型。