标签:info res target strong 参数传递 native 做了 rcp copy
效率:System.arraycopy > clone > Arrays.copyOf > for循环
for循环的话,效率最低.
System.arraycopy()源码中可以看到是native方法:native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。 可以将native方法比作Java程序同C程序的接口。
public static native void arraycopy(Object src, int srcPos,
Object dest, int destPos,int length);
从源码中可以看到本质上是调用的arraycopy方法。,那么其效率必然是比不上 arraycopy的。
public static int[] copyOf(int[] original, int newLength) {
int[] copy = new int[newLength];
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength));
return copy;
}
clone()的完整定义:protected native Object clone() throws CloneNotSupportedException;只有Object[]数组的clone()方法才返回Object类型,子类重写了父类的方法。
而clone()和System.arraycopy只是从实验的结果来看是System.arraycopy的效率高。
将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的静态内部类!用这个对象对列表进行添加删除更新操作,就会报UnsupportedOperationException异常。本质上仍是一个数组。
public class TestConStructor
{
public TestConStructor()
{
System.out.println("constructor");
}
public void TestConStructor()
{
System.out.println("not constructor");
}
public static void main(String[] args)
{
TestConStructor testConStructor = new TestConStructor();
System.out.println("main");
testConStructor.TestConStructor();
}
Servlet的生命周期可以分为初始化阶段,运行阶段和销毁阶段三个阶段。
初始化阶段:Servlet启动,会读取配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,将ServletConfig作为参数来调用init()方法。
当参数为引用类型时:只有对引用对象的内部做了修改,才会影响原对象,如果直接将引用修改了,则对原对象没有影响,唯一的影响就是:这个被修改的引用,现在不是原来对象的引用,而是新对象的引用。
引用传递指的是传递的时候,传递的是对象的引用。如果对引用的内部成员进行操作,则会直接影响到原对象,但是如果直接把此引用指向了其他对象,那对不起,这个引用从此以后,便与之前的对象没有任何关系,当前代表的仅仅是新指向的对象。
标签:info res target strong 参数传递 native 做了 rcp copy
原文地址:http://www.cnblogs.com/0427mybirthday/p/7668911.html