zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    求给定数组中最大值和其在数组中的索引并输出
    多线程与多进程
    logging模块
    QWidget上下文菜单处理函数
    python中的yield关键字
    菜单栏(QMenuBar)与菜单(QMenu)
    PyQt5布局管理(1)
    QMainFrame类
    QTP11使用DOM XPath以及CSS识别元素对象
    C# 跨线程访问控件
  • 原文地址:https://www.cnblogs.com/lanqie/p/7636844.html
Copyright © 2011-2022 走看看