题目来源:https://www.nowcoder.com/
题目1
选B
分析:
题目2
选A
分析:
首先,重载和重写都是多态的一种体现方式。重载是编译期间的活动,重写是运行期间的活动。
其次,重载是在一个类中定义相同的名字的方法,方法的参数列表或者类型要互相不同,但是返回值类型不作为是否重载的标准,可以修改可见性; 重写是不同的,要求子类重写基类的方法时要与父类方法具有相同的参数类型和返回值,可见性需要大于等于基类的方法
题目3
选B
分析:Java源文件的后缀名是.java。源文件通过JVM虚拟机编译后会生成二进制字节码文件,后缀是.class
题目4
选A
分析:import导包关键字
题目5
选A
分析:string是final修饰的,会将创建的变量放入字符串常量池,当再创建同样的字符串时,发现常量池中有则直接使用
题目6
选B
分析:多行注释可以嵌套单行注释,但是不能嵌套多行注释
题目7
选A
分析:String 是不可变类型,是存储在常量字符区的
题目8
选A
分析:Vector & ArrayList 的主要区别
1) 同步性:Vector是线程安全的,也就是说是同步的 ,而ArrayList 是线程序不安全的,不是同步的 数2。
2)数据增长:当需要增长时,Vector默认增长为原来一倍 ,而ArrayList却是原来的50% ,这样,ArrayList就有利于节约内存空间。
题目9
选C
题目10
选C
分析:当i=10的时候,for循环还是会执行下去的,当i=11的时候不满足循环条件,就会终止循环,但是此时的i已经等于11了,所以输出的i是11
题目11
选A
分析:
题目12
选D
分析:switch语句后的控制表达式只能是short、char、int、long整数类型和枚举类型,不能是float,double和boolean类型。String类型是java7开始支持。
题目13
选C
题目14
选B
分析:
A:生成java.lang.Class对象是在加载时进行的。生成Class对象作为方法区这个类的各种数据的访问入口。
B:既然是对象成员,那么肯定在实例化对象后才有。在类加载的时候会赋予初值的是类变量,而非对象成员。
C:这个会调用。可以用反射试验。
D:类方法解析发生在解析过程。
题目15
选C
分析
1、java中所有的异常的超类为Throwable(可抛出的,看起来像个接口,实际上是个类),Exception继承Throwable
2、java中的异常分为编译时异常与运行时异常,编译时异常直接继承Exception类,编译时异常要求程序员必须在编写时对其进行处理,否则编译无法通过,或try catch或throw;运行时异常,继承于RuntimeException类(Exception的一个子类),在编写代码阶段不对其处理也可以通过编译
题目16
选C
分析:
客户端通过new Socket()方法创建通信的Socket对象 服务器端通过new ServerSocket()创建TCP连接对象 accept接纳客户端请求
题目17
选C
分析:a++ 先把10赋值给a 再+1 所以左边是10 但此时a=11。右边a-- 也是先赋值 a=11,再-1。10+11=21 此时a=10。
题目18
选A
分析:
在继承中代码的执行顺序为:1.父类静态对象,父类静态代码块2.子类静态对象,子类静态代码块 3.父类非静态对象,父类非静态代码块 4.父类构造函数5.子类非静态对象,子类非静态代码块6.子类构造函数
对于本题来说:在只想new Sub(5)的时候,父类先初始化了 int flag = 1,然后执行父类的构造函数Super(),父类构造函数中执行的test()方法,因子类是重写了test()方法的,因此父类构造函数中的test()方法实际执行的是子类的test()方法,所以输出为Sub.test() flag=1,接着执行子类构造函数Sub(5) 将flag赋值为5,因此输出结果Sub.Sub() flag=5。最终选择了A。
题目19
选D
分析:编译看左边,运行看右边。 父类型引用指向子类型对象,无法调用只在子类型里定义的方法
题目20
选ABD
PS:部分为牛客网题解