1、Java的数据类型只有两大类:8大基本数据类型与引用数据类型。
(1)、基本数据类型:6种数字类型(byte/short/int/long/float/double)、1种字符型(char)、1种布尔型(boolean)
(2)、引用数据类型:类(Class)、接口(Interface)、数组(Array)、字符串类型String、枚举类型Enum。
(3)、引用类型:参数传递时,以拷贝引用地址的方式传递给接收变量,而非复制整个数据本体。
(4)、除八大基本数据类型之外的所有数据类型,都为引用数据类型。所有引用数据类型的默认值都为null。
(5)、为了基本数据类型可以与引用数据类型互相转换、以利用彼此的特性,java为每一种基本数据类型提供了相应的包装类。包装类对基本数据类型进行了封装,提供了丰富的功能,包装类是基本类型的拓展。
(6)、包装类是引用类型的一种,包装类与基本数据类型一一对应,也有8种,分别为:Byte、Short、Integer、Long、Float、Double、Character、Boolean。
2、基本数据类型与引用数据类型区别
(1)、存储方式:基本数据类型直接存储值,而引用数据类型存储的是对象的引用(内存地址)。
(2)、默认值:基本数据类型会有默认值,例如int类型的默认值是0,boolean类型的默认值是false。而引用数据类型的默认值是null,表示没有引用指向任何对象。
(3)、复制操作:基本数据类型进行复制时,会复制该变量的值。而引用数据类型进行复制时,只会复制对象的引用,两个变量指向同一个对象。
(4)、比较操作:基本数据类型使用==进行比较时,比较的是值是否相等。而引用数据类型使用==进行比较时,比较的是引用是否指向同一个对象,如果要比较对象的内容是否相同,需要使用equals()方法。
3、基本数据类型与包装类区别
(1)、空值处理:基本类型没有空值(null)的概念,而包装类型可以将null作为有效值来表示缺失或无效值。
(2)、默认值:基本类型有默认值,例如int类型的默认值是0,boolean类型的默认值是false。而包装类型的默认值是null。
(3)、对象操作:基本类型不能直接调用方法,而包装类型可以调用对应的方法,例如Integer类的intValue()方法可以获取保存在Integer对象中的值。
(4)、自动装箱/拆箱:基本类型和包装类型之间可以进行自动装箱和拆箱的转换。自动装箱是指将基本类型的值自动转换为对应的包装类型对象,如int 转Integer,Integer integer = 100,底层调用了Interger.valueOf(100)方法;而自动拆箱则是将包装类型对象自动转换为基本类型的值。
(5)、比较方式:基本类型使用==进行比较时,比较的是值是否相等。而包装类型使用==进行比较时,比较的是引用是否指向同一个对象,而不是比较值是否相等。若要比较包装类型的值是否相等,需要使用equals()方法。
4、数据类型转换
(1)、Java中的数据转换主要分为两种:自动类型转换(也称为隐式转换)、强制类型转换(也称为显式转换)。
(2)、转换从低级到高级:byte、short、char(三者同级)——> int ——> long ——> float ——> double。
(3)、自动类型转换:代码无需任何处理,在代码编译时 编译器会自动进行处理。特点——低级转换高级。
(4)、强制类型转换:需要在待转换数据类型前 使用 (type)value, type是要强制类型转换后的数据类型,可能会导致溢出或损失精度 。特点——高级转换低级。
(5)、在把容量大的类型转换为容量小的类型时必须使用强制类型转换。转换过程中可能导致溢出或损失精度,例如:int i = 128; byte b = (byte)i;因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
(6)、浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:(int)23.7==23;

被折叠的 条评论
为什么被折叠?



