2015-04-12一些知识点

  1、一个关于内部类的小程序

package com.lk.C;

public class Test1 {
    static class one{
        private static class two{
            public static void main(String[] args) {
                System.out.println("two");
            }
        }
    }
}
输出
two

  2、Object 类下的两个方法:getClass()作用是返回一个对象的运行时类;toString()方法返回该对象的字符串表示。

  3、Java的集合:Vector容器确切地知道它所持有的对象隶属于什么类别,Vector不进行边界检查。

       边界检查:在设计或实现某种集合的时候,经常会遇到集合边界值的情况。例如,从集合中取一个元素,必须得考虑这个集合是否非空;向一个有限集合添加元素,必须考虑集合满的情况。而对于包含异常处理的编程语言来说,如果遇到集合操作边界,我们常见的编程约定有两种:一种选择是将边界条件作为异常来处理。另一种选择是不将边界操作作为异常来处理,而是用某个特定值来表示(如null)。

  4、关于Collections:Collections是针对集合类的一个帮助类,它提供了一些列静态方法实现对各种集合的搜索、排序、线程安全化等操作。相当于对Array进行类似操作的类--Arrays。

Collections.max(Collection coll)//取coll中最大的元素
Collections.sort(List list)//对list中元素排序

  5、如何选择容器类:

1)容器类和Array的区别,择取:

  容器类仅能持有对象引用(指向对象的指针),而不是将对象信息复制一份至数列某位置,一旦将对象置入容器内,便损失了该对象的类别信息。

2)在各种Lists中,最好的做法是以ArrayList作为默认选择。当插入、删除频繁时,使用LinkedList();Vector总是比ArrayList慢;

   在各种Sets中,HashSet通常优于HashTree(插入、查找)。只有当需要产生一个经过排序的序列,才用TreeSet。TreeSet的意义是用来维护其内元素的排序状态;

   在各种Maps中,HashMap用于快速查找。当元素个数固定时,最好使用Array,因为Array的效率是最高的。

  6、一个关于构造函数的实例:子类继承父类时构造函数的执行顺序等的问题

package com.lk.C;

public class Test2 extends X{
    Y y = new Y();//步骤3:再次构造Y,输出Y
    Test2(){
        System.out.println("Z");//步骤4:最后调用Test2本身的构造函数,输出Z
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new Test2();
    }

}

class X{
    Y b = new Y();//步骤1:若Test2继承X,构造Test2,则先构造X,进入X类运行Y b = new Y();输出Y
    X(){
        System.out.println("X");//步骤2:接着输出X
    }
}
class Y{
    Y(){
        System.out.println("Y");
    }
}
Y
X
Y
Z

   7、在继承结构中,父类的内部细节对于子类是可见的。所以,通过继承的代码复用是一种“白盒式代码复用”。

        组合是指通过对现有的对象进行拼装(组合)产生新的更复杂的功能。因为在对象之间,各自的内部细节是不可见的,所以,我们也说这种方式的代码复用是“黑盒式代码复用”。

  8、静态的方法不能被重写,一下程序输出

package com.lk.C;

public class Test4 {
    public static void main(String[] args) {
        Father f = new Father();
        Father c = new Child();
        System.out.println(f.getName());
        System.out.println(c.getName());
    }
}
class Father{
    public static String getName(){
        return "Father";
    }
}
class Child extends Father{
    public static String getName(){
        return "Child";
    }
}
Father
Father

  9、子类的构造函数如果要引用super()方法,必须把super放在函数的首位,否则会编译不通过。

原文地址:https://www.cnblogs.com/luankun0214/p/4419324.html