java基础

1、方法重载和方法重写的区别

  比较点 重载 重写
1 单词 Overload Override
2 方法的声明 方法名相同,参数列表不同 方法名相同,参数列表相同
3 返回值 没有要求 返回值必须相同或者子类
4 访问权限 没有要求 比父类大
5 异常范围 没有要求 比父类小或者与父类相同
6 范围 同一个类中 继承关系中

2、在别人博客看到一篇文章,说写一个方法:指定一个整数n,返回一组随机数,包含0--( n-1),不能重复。

评论里有人收用Set可以直接返回,因为HashSet存的元素是无序的,觉得想法有新意。

但是还是验证了下:

    public static void getRandomList(int len) {
        Set set = new HashSet();
        for (int i = 0; i < len; i++) {
            set.add(i);
        }

        Iterator iterator = set.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());

        }

    }

发现传入10,100,1000...都是顺序返回,后来传入1000,000 发现总体是递增的,局部有乱序。

HashSet是不保证有序,但不是保证无序,这是有区别的。

评论下其他的方法:

    public static void getRandomList(int len) {
        List list = new ArrayList(len);
        List list2 = new ArrayList(len);
        for (int i = 0; i < len; i++) {
            list.add(i);
        }
        Random r = new Random();

        while (list.size() > 0) {
            list2.add(list.remove(r.nextInt(list.size())));
        }

        System.out.println(list2);
    }

2、代码执行顺序

public class Pa {
    public static void static_method() {
        System.out.println("Pa:static_method");
    }

    static {
        System.out.println("Pa:static_area");
    }

    {
        System.out.println("Pa:normal_area");
    }

    public Pa() {
        System.out.println("Pa:constructor");
    }

}
public class A extends Pa {

    public static void static_method() {
        System.out.println("A:static_method");
    }

    static {
        System.out.println("A:static_area");
    }

    {
        System.out.println("A:normal_area");
    }

    public A() {
        System.out.println("A:constructor");
    }
}
    public static void main(String[] args) {
        A a = new A();

    }

 结果:

Pa:static_area
A:static_area
Pa:normal_area
Pa:constructor
A:normal_area
A:constructor
原文地址:https://www.cnblogs.com/lanqie/p/7636844.html