zoukankan      html  css  js  c++  java
  • java牛客刷题2020年9月4日

    java牛客刷题2020年9月4日

    1. 对于abstract声明的类,下面说法正确的是

      可以实例化
      不可以被继承
      子类为abstract
      只能被继承
      可以被抽象类继承
      正确答案: E   你的答案: B
      A,抽象类不能实例化,因为有抽象方法未实现
      B,可以被继承。派生类可以实现抽象方法
      C,子类可以是抽象的,也可以非抽象的
      D,只能被继承说法太肯定,不正确
      E,可以被抽象类继承,也可以被非抽象类继承
      
    2. 有时为了避免某些未识别的异常抛给更高的上层应用,在某些接口实现中我们通常需要捕获编译运行期所有的异常, catch 下述哪个类的实例才能达到目的:()

      正确答案: B 你的答案: D (错误)

      Error
      Exception
      RuntimeException
      Throwable
      

      22222

      1. 检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。

        public class HelloB extends HelloA 
        {
         public HelloB()
         {
         }
         {
             System.out.println("I’m B class");
         }
         static
         {
             System.out.println("static B");
         }
         public static void main(String[] args)
         {
             new HelloB();
         }
        }
        class HelloA
        {
         public HelloA()
         {
         }
         {
             System.out.println("I’m A class");
         }
         static
         {
             System.out.println("static A");
         }
        }
        
        static A
        I’m A class
        static B
        I’m B class
        答案:
        其中涉及:静态初始化代码块、构造代码块、构造方法
        当涉及到继承时,按照如下顺序执行:
        1、执行父类的静态代码块
        static {
                System.out.println("static A");
            }
        输出:static A
        2、执行子类的静态代码块
        static {
                System.out.println("static B");
            }
        输出:static B
        3、执行父类的构造代码块
        {
                System.out.println("I’m A class");
            }
        输出:I'm A class
        4、执行父类的构造函数
        public HelloA() {
            }
        输出:无
        5、执行子类的构造代码块
        {
                System.out.println("I’m B class");
            }
        输出:I'm B class
        6、执行子类的构造函数
        public HelloB() {
            }
        输出:无
        
        那么,最后的输出为:
        static A
        static B
        I'm A class
        I'm B class
        正确答案:C
        
        
        
        或者:
        1.静态代码块 2.构造代码块3.构造方法的执行顺序是1>2>3;明白他们是干嘛的就理解了。
        1.静态代码块:是在类的加载过程的第三步初始化的时候进行的,主要目的是给类变量赋予初始值。
        2.构造代码块:是独立的,必须依附载体才能运行,Java会把构造代码块放到每种构造方法的前面,用于实例化一些共有的实例变量,减少代码量。
        3.构造方法:用于实例化变量。
        1是类级别的,2、3是实例级别的,自然1要优先23.
        在就明白一点:对子类得主动使用会导致对其父类得主动使用,所以尽管实例化的是子类,但也会导致父类的初始化和实例化,且优于子类执行。
        
      2. Java 中的集合类包括 ArrayList 、 LinkedList 、 HashMap 等,下列关于集合类描述正确的是?()

        正确答案: A B D 你的答案: B C D (错误)

        ArrayList和LinkedList均实现了List接口
        ArrayList访问速度比LinkedList快
        随机添加和删除元素时,ArrayList的表现更加快速
        HashMap实现Map接口,它允许任何类型的键和值对象,并允许将NULL用作键或值
        
        解释:
        A、HashMap实现了Map接口的,它的Key和Value都可以是null,但是Hashtable种,Key和Value都不能是null。
        B、ArrayList与LinkedList都实现了List接口,继承了AbstractList类。
        C、ArrayList底层是动态数组是实现,随机位置添加和删除,都需要移动数组的数据,而LinkedList底层是双向链表,只需要修改Node节点的引用。
        D、随机访问数组要比链表块。
        下面放一张ArrayList和LinkedList的区别表:
        

      3. 在使用super和this关键字时,以下描述错误的是()

        在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
        super()和this()不一定要放在构造方法内第一行
        this()和super()可以同时出现在一个构造函数中
        this()和super()可以在static环境中使用,包括static方法和static语句块
        正确答案: B C D   你的答案: B D (错误)
        1、super()表示调用父类构造函数、this()调用自己的构造函数,而自己的构造函数第一行要使用super()调用父类的构造函数,所以这俩不能在一个构造函数中会出现重复引用的情况
        2、super()和this()必须在构造函数第一行,所以这一点也表明他俩不能在一个构造函数中
        3、this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块(里面不能使用非static类型的)。
        
  • 相关阅读:
    Ubuntu 14.04 卸载通过源码安装的库
    Ubuntu 14.04 indigo 相关依赖
    Ubuntu 14.04 indigo 安装 cartographer 1.0.0
    Ubuntu 14.04 改变文件或者文件夹的拥有者
    安装cartographer遇到Unrecognized syntax identifier "proto3". This parser only recognizes "proto2"问题
    Unrecognized syntax identifier "proto3". This parser only recognizes "proto2". ”问题解决方法
    查看所有用户组,用户名
    1卸载ROS
    Ubuntu14.04 软件安装卸载
    Ubuntu14.04系统显示器不自动休眠修改
  • 原文地址:https://www.cnblogs.com/chenyameng/p/13612644.html
Copyright © 2011-2022 走看看