java中有8中基本数据类型,分别是boolean,char,byte,short,int,long,float,double这8种,但是我们可曾思考过,java明明是一种面向对象的语言,为什么还要保留基本数据类型呢?
对此,我们就来对比一下基本数据类型和对象类型。基本数据类型基于值,对象类型基于对象的引用。先做两种声明,第一种是使用基本数据类型,第二种是使用包装类。
int n1 = 100;
Integer n2 = new Integer(100);
两种声明的内存结构如下图所示。
new将对象存储在堆中,针对一些特别小的、简单的变量,往往不是很有效,创建一个并非是引用的“自动”变量,这个变量直接存储“值”,并置于栈中,更加高效些。
对此问题的思考源自导师开会时的发问。总以为理所当然,但是仍然深藏学问。多思考,多发问,多思考.....
日ji