是不是可以理解为,没有开辟内存空间的都是变量,开辟了内存空间的对象?
变量包括简单变量(int float byte)也包括对象引用。对象可以算变量的一种。
个人的理解:
变量范围比较广,声明出的东西都是用户的变量。
如
int a;
String b;
Data d;
而Java很重要的一个特点是面向对象,特别喜欢把什么东西都搞一个class类出来。对于class的实例化,我们称其为类的实例,
String str=new String();
其中的str细化来看是该实例的句柄,其值本身应该是一个栈中的地址值,指向堆中的一块内存;但是宏观一点看,我们说str是一个String对象,指的是连着句柄和它指向的空间,并没有刻意区分
至于题主想区分的应该是“基本数据类型”和“封装类”
可以这么理解
变量只是分配了栈内存,并没有分配内存空间,而对象是已经在内存中占用了空间的。
变量声明之后如果没有进行赋值,是不能在代码中使用的。而对象是可以在代码使用,并使用它的成员变量或者方法。
只要声明了变量就分配了空间,只不过它一般是放在栈内存里面而已。