马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求大佬解释。
Java中一切皆是对象,那么基本数据类型算是对象吗?int a=10;
System.out.println(a instanceof Object);
这样写程序会报错,是不是说明Java中的基本数据类型不是对象?
包装类的存在是不是也说明基本数据类型不是对象,需要包装类的存在将基本数据类型变为对象呢?
new创建对象存放在堆上,但创建简单、较小的变量没有必要用new。因此Java采用创建并非是引用的自动变量来存储这类小而简单的变量,并将它们放在堆栈里,以提高效率。这类自动变量就是Java的基本类型。
Java中一切皆对象,但基本类型却不是对象,为了解决这个问题,Java让每个基本类型都对应了一个包装器类型。
包装器类型将基本类型包装起来,添加了属性和方法。Java SE5自动包装功能可以将基本类型转换为包装器类型,当然也可以反向转换。
基本类型和它们的包装器类型有哪些区别呢?
a)包含内容不同。基本类型只是表示一个数据,包装器类型包括数据和方法。
b)声明方式不同。包装器类型需要使用new来声明,而基本类型不需要。
c)未进行初始化时,默认初始值不同。如int作为类成员变量时,默认初始值为0,而包装器类型都为null。
d)存储位置不同。基本类型存储在堆栈中,而包装器类型的引用存储在堆栈中,引用引用的对象存储在堆中。
e)使用方式不同。基本类型可以直接赋值,不能放进List,Map等集合类中,而包装器类型可以。
Java还提供了两个用于高精度计算的类,BigInteger(支持任意精读的整数)和BigDecimal(支持任何精度的定点数)。它们大体上属于包装器类型,但没有对应的基本类型。
|