Java对象与Java对象引用
首先创建一个对象
对象和对象的引用在空间分配上的位置
我们来看一段代码:
class test1{
static int a=1;
public test1() {
System.out.println("我是第"+a+"次被构造");
a++;
}
}
public class test {
public static void main(String[] args) {
test1 t1 = new test1();
test1 t2;
test1 t3 =t1;
test1 t4=new test1();
}
}
输出结果:
在这段代码中,t1是对象引用,分配在main方法栈上,new test1() 实例化一个对象(称为对象1),分配在堆上,t1连接到对象1。t2也是一个对象引用,但是没有连接到任何对象。t3也是一个对象引用,连接到了对象1。t4是一个对象引用,连接到了新创建的对象2。
对比C++的对象
来看一下这段代码:
#include <iostream>
using namespace std;
class test
{
public:
int a=1;
test(){cout<<"我被构造了"<<endl;}
};
int main()
{
test t1;
test t2;
//test t3 =t1;
//test t4=new test1();
return 0;
}
输出结果:
在C++中,实例化对象没有对象引用这个东西,直接就给实例化对象分配了空间。并且test t3 =t1;和test t4=new test();在C++中都是不允许的,会发生编译错误。