黑马程序员技术交流社区
标题:
哪种用法更好些呢?
[打印本页]
作者:
罗雪梅
时间:
2012-9-27 22:15
标题:
哪种用法更好些呢?
本帖最后由 罗雪梅 于 2012-9-28 22:11 编辑
class Person
{
//静态方法,传递是的本类对象的参数
static void method(Person p )
{
System.out.println(p);
}
//主方法
public static void main(String[] args)
{
//创建了一个本类对象,然后输出
Person pp=new Person();
System.out.println(pp);
}
}
在一本书中看到的,很简单的几行代码,但是他说明的问题是参数传递
第一个方法传递本类对象做为参数
第二个,主方法中直接创建了一个本类对象
实在没想明白他说的,传递的效率比创建对象高是什么意思,是指在内在开辟空间还是指运算呢,谢谢
作者:
叶征东
时间:
2012-9-27 22:34
static void method(Person p )//------------------(1)
{
System.out.println(p);
}
static void method()//--------------------------(2)
{
Person p = new Person;
System.out.println(p);
}
(1)和(2)的区别:
(2)是硬编码,你每次调用(2),只能System.out.println(p);
(1)比(2)要灵活,每次调用(1),我可传入p1,也可以传入p2......,也就可以打印不同的对象了;
他所说的传递效率更高,我认为体现在这里.
你认为怎么样?
呵
作者:
王玉岩
时间:
2012-9-27 22:36
静态(static)方法是编译时直接加载加载到内存中的
栈中
而通过 new 实例化一个对象,这个对象是放在内存的
堆中
我觉得应该是这块的原因不知道对不对
作者:
王贵朝
时间:
2012-9-27 22:50
1,我觉得和单例模式的先加载和延迟加载有点关系,先加载的活不管怎么样都在堆中建立了对象
2, static void method(Person p )可以多态的传入而 Person p = new Person;
System.out.println(p);只能传入已经new好的对象。
作者:
陈琦
时间:
2012-9-28 15:58
要知道,传递一个引用只是连接到一个内存中的对象,而new的时候是开辟了一个新的空间,并进行引用传递。
作者:
胡斌
时间:
2012-9-28 16:11
因为传递对象作为参数只在栈中开辟内存,而不在堆中开辟内存,这就是所说的空间复杂服比较小,所以速度快,效率高!
作者:
杨华东
时间:
2012-9-28 18:29
class Person
{
//静态方法,传递是的本类对象的参数
static void method(Person p )
{
System.out.println(p);
}
//主方法
public static void main(String[] args)
{
//创建了一个本类对象,然后输出
Person pp=new Person();
System.out.println(pp);
}
}
在一本书中看到的,很简单的几行代码,但是他说明的问题是参数传递
第一个方法传递本类对象做为参数
第二个,主方法中直接创建了一个本类对象
实在没想明白他说的,传递的效率比创建对象高是什么意思,是指在内在开辟空间还是指运算呢,谢谢
我认为:首先静态的一般函数在类的字节码文件加载的时候比其它函数(包括主函数)要提前一步执行完毕。其次,本程序中
在主函数内还要接着在堆内存里继续创建实例对象。我想应该是java语法的先后顺序造成的效率差异。
作者:
柳彬
时间:
2012-9-28 21:23
你那个静态方法还不是要传入一个已经创建的对象为参数,怎么说明效率。其实传递效率高是所用时间最少,速度最快
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2