zoukankan      html  css  js  c++  java
  • Java零散知识点

    Java零散知识点

    一:数组

    1. 数组复制的几种方法效率比较

    效率:System.arraycopy > clone > Arrays.copyOf > for循环

    for循环

    for循环的话,效率最低.

    System.arrycopy()

    System.arraycopy()源码中可以看到是native方法:native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。 可以将native方法比作Java程序同C程序的接口。

    public static native void arraycopy(Object src,  int  srcPos,
               Object dest, int destPos,int length); 
    

    Arrays.copyOf()

    从源码中可以看到本质上是调用的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方法

    clone()的完整定义:protected native Object clone() throws CloneNotSupportedException;只有Object[]数组的clone()方法才返回Object类型,子类重写了父类的方法。
    而clone()和System.arraycopy只是从实验的结果来看是System.arraycopy的效率高。

    2.Arrays.asList()方法

    将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的静态内部类!用这个对象对列表进行添加删除更新操作,就会报UnsupportedOperationException异常。本质上仍是一个数组。

    二:类名

    1.类名称名称相关问题

    1. 方法是可以和类名同名的,和构造方法唯一的区别就是,构造方法没有返回值而方法可以有返回值。
    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

    1.Servlet的生命周期

    Servlet的生命周期可以分为初始化阶段,运行阶段和销毁阶段三个阶段。

    1. init():仅执行一次,负责在装载Servlet时初始化Servlet对象
    2. service() :核心方法,一般HttpServlet中会有get,post两种处理方式。在调用doGet和doPost方法时会构造servletRequest和servletResponse请求和响应对象作为参数。
    3. destory():在停止并且卸载Servlet时执行,负责释放资源

    初始化阶段:Servlet启动,会读取配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,将ServletConfig作为参数来调用init()方法。

    四:参数传递

    当参数为引用类型时:只有对引用对象的内部做了修改,才会影响原对象,如果直接将引用修改了,则对原对象没有影响,唯一的影响就是:这个被修改的引用,现在不是原来对象的引用,而是新对象的引用。
    引用传递指的是传递的时候,传递的是对象的引用。如果对引用的内部成员进行操作,则会直接影响到原对象,但是如果直接把此引用指向了其他对象,那对不起,这个引用从此以后,便与之前的对象没有任何关系,当前代表的仅仅是新指向的对象。

  • 相关阅读:
    [求助] win7 x64 封装 出现 Administrator.xxxxx 的问题
    [经验] Win7减肥攻略(删文件不删功能、简化优化系统不简优化性能)
    [原创] Easy SysLite V1.2 (2016.5.29更新,新增加WIN10支持,一个程序适配所有系统减肥)
    [经验] 新版SkyIAR、Easy Image X在有些PE里不能运行的解决办法
    [教程] [承風雅傳HSU]用ES4封裝Win7---ES4 Win7封裝教程(未完待續)
    [讨论] 这几天来封装Win7用户配置文件丢失的解决方法个人心得
    [原创] 【2014.12.02更新网盘链接】基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装
    [分享] 封装工具ES4配置文件解释
    [分享] 史上最简单的封装教程,五分钟学会封装系统(以封装Windows 7为例)
    [分享] 从定制Win7母盘到封装详细教程 By BILL ( 10月23日补充说明 )
  • 原文地址:https://www.cnblogs.com/0427mybirthday/p/7668912.html
Copyright © 2011-2022 走看看