Java有两种数据类型:基本数据类型和引用数据类型
基本数据类型
CPU可直接对基本数据类型进行运算,Java提供8种基本数据类型:字符型、布尔型、四种整型、两种浮点型;
计算机内存的最小存储单元是字节(byte),一个字节由8个二进制位 / 8 bit组成,用二进制表示其数值范围为 00000000-11111111,即十进制数0-255,十六进制数00-FF;不同的数据类型占用不同的字节数;
整数类型
Java只提供带符号的整数,其最高的bit位为符号位,最高位为0表示正数,最高位为1表示负数;Java当中共有四种整型:
byte:使用1字节/8bit表示,取值范围为-27~27-1;
short:使用2字节/16bit表示,取值范围为 -215~215-1;
int:使用4字节/32bit表示,取值范围为-231~231-1;
long:使用8字节/64位表示,取值范围为 -263~263-1;
不需要特别记忆数值类型数据的取值范围,其最大值和最小值都以常量的形式定义在了包装类中。
整型数值都可以用二进制、八进制、十进制、十六进制表示,八进制数值需要加上前缀0,十六进制数值需要加上前缀0x;
浮点数类型
在计算机中小数通过浮点类型来表示,在Java当中提供了两种浮点类型:float和double,它们都是符合IEEE 754标准的浮点数
float:单精度浮点型,使用4字节/32bit表示;对于float类型的数据,需要上后缀f;
double:双精度浮点型,使用8字节/64位表示;
布尔类型
boolean:布尔型通常是逻辑运算的结果,只有true和false这两种值;
Java没有强制规定布尔类型变量占用的存储空间的大小,理论上布尔类型的值只占用1bit,但由于内存的最小单位是字节,当boolean类型数据单独使用时,JVM内部会将其表示为4字节的整数,当boolean类型与数组一起使用时,会被JVM编译为byte数组,此时每个boolean占用1字节;
字符类型
char类型/字符类型使用2字节/16bit表示,用于存储字符,取值范围为\u0000(0)~\uffff(65535);
char类型使用单引号’ 来包含字符且仅有一个字符;
Java中的char类型可以表示标准的ASCII字符,也可以表示Unicode字符;
字面量可以赋值给对应的数据类型的变量;
字符串字面量包含在一对双引号之间,字符字面量包含在一对单引号之间;
字符字面量和字符串字面量都可以包含任何Unicode字符;
Java支持转义字符,常用的转义字符如下:
引用数据类型
除了基本数据类型,Java还有引用类型数据;
Java中的引用类型变量类似C/C++中的指针,它存储的是某个对象在内存中的地址,指向该对象;
一旦在声明引用变量时为其指定了类型,变量类型便不能改变,一个引用类型变量可以用来引用任何与之兼容的类型;
对象、数组和字符串都是引用数据类型,所有引用类型的变量的默认值都是null;
数据类型转换
不同类型的数据可以混合运算,运算时需要按照低级到高级的顺序转化为同一种数据类型再进行计算。数据转换必须满足以下的条件:
1、布尔类型的数据不能转换为数值类型;
2、范围小的数据可以自动转换为范围大的数据;
3、等级较高类型的数据转换为等级较低类型的数据时必须使用强制类型转换;
4、转换过程中可能导致溢出或精度的损失,浮点数转换为整数时会舍弃掉小数,而不是进行四舍五入;float→int, float→long,double→int,double→long等由浮点类型转换为整型时,由于会丢失精度,所以不会发生自动转换;
5、子类引用类型能够自动转换成父类引用类型;
6、基本数据类型和其对应的包装类型可以互相转换;
自动类型转换
若转换前的数据类型的等级低于目标数据类型,则会发生自动类型转换;
强制类型转换
在代码中需要用括号将目标数据类型用括号括起来并放置于需要被转换的数据或变量前,如(type)variable;
Original: https://www.cnblogs.com/cloudyzcy/p/13798934.html
Author: 糖小豆
Title: [学习笔记]Java数据类型
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/713025/
转载文章受原作者版权保护。转载请注明原作者出处!