㈠ java 实例化对象
Object[] obj=new Object[10];你可以试试 for(int i=0;i<10;i++) System.out.println(obj[i]);全部输出null.说明没有创建实例。
先解释:我是一楼的哈,再次给你充点虚拟机知识:在JVM虚拟机里,new关键字如同C的 malloc函数。new Object();表示直接对Object类型开辟一个空间,包括的内存空间有:非static成员变量(方法和静态成员在静态内存区)+其他初始化空间。
例如:class Test{ private int a; public List list; public void aaa(){} }创建实例new Test()则开辟a(4字节)+list指针(Java叫对象引用,这时只是一个null)+其他使用空间。
同样:Test[] t=new Test[100];只开辟了100个连续的对象引用地址。这些地址的指向是null.就就是他们都是没有实际内容的对象(null,没有实例化。)如图:
0x10000000 --------> t[0x10000004,0x10000008...]
0x10000004 --------> NULL
0x10000008 --------> NULL
......
所以:我上面的循环输出数组全部是null。
这表示在创建数组时,并未为每个元素分配实际的对象实例,而是分配了相应的内存空间,但这些空间的值都是null。只有当使用new关键字为每个数组元素创建实例后,它们才会指向实际的对象。
例如:for(int i=0;i<10;i++) obj[i]=new Object();这样,每个obj[i]都会指向一个实际的Object实例,循环输出时就不会全是null了。
总结:在创建数组时,若未为每个数组元素赋值为实际对象,它们的值将为null。使用new关键字为每个元素创建实例,才能真正实例化对象。
理解这一点有助于更好地掌握Java中的对象创建和引用机制。希望这些信息对你有所帮助。
㈡ java对象实例化的几种方法
1、用new语句创建对象,这是最常见的创建对象的方法。
2、通过工厂方法返回对象,如:String str = String.valueOf(23);
3、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。如:Object obj = Class.forName("java.lang.Object").newInstance();
4、调用对象的clone()方法。
5、通过I/O流(包括反序列化),如运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
㈢ java中实例和对象有什么区别
对象的名字看你怎么理解,我们有时以变量名也就是对象的引用名称之, 以特指这个变量的对象,有时我们以其所属类名称之,以泛指所有相关的对象,此时与类对象只有一个 类 字之差
java中万物皆对象,实例是其中一种对象的称呼,
相当于从“模板”(类)中创造出实际的“物品”(对象),我们说这个对象是这个类的实例
比如Person p=new Person()
这里的对象叫实例对象,这里的对象相当于实际的“物品”,他是从“模板”中创造的,未必是new出来的,只要符合这个原则就是实例
比如Class p=Person.class
这里的对象叫类对象,因为类相当于“模板”,并不是new Person()这种实际的“物品”