java 实例化对象
Criterion[]criterions=newCriterion[criterionList.size()];这样写算是实例化一个对象吗?还是只是定义一个数组而已。请...
Criterion[] criterions = new Criterion[criterionList.size()];
这样写算是实例化一个对象吗?
还是只是定义一个数组而已。
请高人解答,谢谢。
大家都知道接口是不可实例化的,Criterion 而这个是一个接口,我竟然可以new 出来。
我觉得它只是声明了一个数组,而没有实例化。 大家都说说看法吧! 展开
这样写算是实例化一个对象吗?
还是只是定义一个数组而已。
请高人解答,谢谢。
大家都知道接口是不可实例化的,Criterion 而这个是一个接口,我竟然可以new 出来。
我觉得它只是声明了一个数组,而没有实例化。 大家都说说看法吧! 展开
展开全部
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<String> 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.
你可以试试
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<String> 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.
展开全部
只要有new 关键字就是实例化对象了,在这个语句里是实例化了一个对象,而这个对象是数组,大家称之为数组对象。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
new关键字就是实例化对象的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
实例化了一个数组对象,数组里是空的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-04-07
展开全部
你只声明了一个数组,并没有实例化它,所以系统初始化了这个数组,输出全都为null
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询