题目以及答案来源:牛客网https://www.nowcoder.com/test/question
1.
关于sleep和wait,以下描述错误的是
正确答案: D 你的答案: B (错误)
sleep是线程类的方法,wait是object的方法
sleep不释放对象锁,wait放弃对象锁
sleep暂停线程,但监控状态依然保持,结束后会自动恢复
wait进入等待锁定池,只有针对此对象发出notify方法获得对象锁进入运行状态
解析:
A.Sleep是Thread类中的方法,而wait()是Object中的方法
C.sleep()方法导致了程序暂停,但它的监控状态依然保持,到了指定时间又会恢复
在sleep()方法中线程不会释放对象锁。
wait()方法会导致线程放弃对象锁,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。
2.
下面程序的输出结果是?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
正确答案: D 你的答案: D (正确)
出错
342
34234
3423
解析:
1、try中没有抛出异常,则catch语句不执行,如果有finally语句,则接着执行finally语句,继而接着执行finally之后的语句;
2、try中抛出异常,有匹配的catch语句,则catch语句捕获,如果catch中有return语句,则要在finally执行后再执行;
3.在运行时,由java解释器自动引入,而不用import语句引入的包是()。
正确答案: A 你的答案: B (错误)
java.lang
java.system
java.io
java.util
答案:A
java.lang包是java语言的核心包,lang是language的缩写
java.lang包定义了一些基本的类型,包括Integer,String之类的,是java程序必备的包,有解释器自动引入,无需手动导入
4.
|
问这个程序的输出结果。
正确答案: D 你的答案: B (错误)
Base SonB
Son SonB
Base Son SonB
编译不通过
5.
Base base=new Son(); 是多态的表示形式。父类对象调用了子类创建了Son对象。
base调用的method()方法就是调用了子类重写的method()方法。
而此时base还是属于Base对象,base调用methodB()时Base对象里没有这个方法,所以编译不通过。
要想调用的话需要先通过SON son=(SON)base;强制转换,然后用son.methodB()调用就可以了
以下关于final关键字说法错误的是
正确答案: A C 你的答案: C (错误)
final是java中的修饰符,可以修饰类、接口、抽象类、方法和属性
final修饰的类肯定不能被继承
final修饰的方法不能被重载
final修饰的变量不允许被再次赋值
final修饰类、方法、属性!不能修饰抽象类,因为抽象类一般都是需要被继承的,final修饰后就不能继承了。
final修饰的方法不能被重写而不是重载!
final修饰属性,此属性就是一个常量,不能被再次赋值!
6.链接:https://www.nowcoder.com/questionTerminal/b15b6a4450814167b8cc2b84392f6c2f
来源:牛客网
子类A继承父类B, A a = new A(); 则父类B构造函数、父类B静态代码块、父类B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块 执行的先后顺序是?
-
父类B静态代码块->父类B构造函数->子类A静态代码块->父类B非静态代码块->子类A构造函数->子类A非静态代码块
-
父类B静态代码块->父类B构造函数->父类B非静态代码块->子类A静态代码块->子类A构造函数->子类A非静态代码块
-
父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A构造函数
-
父类B构造函数->父类B静态代码块->父类B非静态代码块->子类A静态代码块->子类A构造函数->子类A非静态代码块
链接:https://www.nowcoder.com/questionTerminal/b15b6a4450814167b8cc2b84392f6c2f
来源:牛客网
当实例化子类对象时,首先要加载父类的class文件进内存,静态代码块是随着类的创建而执行,所以父类静态代码块最先被执行,子类class文件再被加载,同理静态代码块被先执行;实例化子类对象要先调用父类的构造方法,而调用父类构造方法前会先执行父类的非静态代码块
7.
如果一个接口Glass有个方法setColor(),有个类BlueGlass实现接口Glass,则在类BlueGlass中正确的是? ( )
正确答案: C 你的答案: C (正确)
protected void setColor() { …}
void setColor() { …}
public void setColor() { …}
以上语句都可以用在类BlueGlass中
JAVA 子类重写继承的方法时,不可以降低方法的访问权限,子类继承父类的访问修饰符要比父类的更大,也就是更加开放,假如我父类是protected修饰的,其子类只能是protected或者public,绝对不能是friendly(默认的访问范围)或者private,当然使用private就不是继承了。还要注意的是,继承当中子类抛出的异常必须是父类抛出的异常的子异常,或者子类抛出的异常要比父类抛出的异常要少。
8.
以下哪项陈述是正确的?
正确答案: E 你的答案: D (错误)
垃圾回收线程的优先级很高,以保证不再 使用的内存将被及时回收
垃圾收集允许程序开发者明确指定释放 哪一个对象
垃圾回收机制保证了JAVA程序不会出现 内存溢出
进入”Dead”状态的线程将被垃圾回收器回收
以上都不对
A: 垃圾回收在jvm中优先级相当相当低。
B:垃圾收集器(GC)程序开发者只能推荐JVM进行回收,但何时回收,回收哪些,程序员不能控制。
C:垃圾回收机制只是回收不再使用的JVM内存,如果程序有严重BUG,照样内存溢出。
D:进入DEAD的线程,它还可以恢复,GC不会回收深入理解Java虚拟机 书籍中p66,真正宣布一个对象死亡,至少需要经历2次标记过程。当第一次标记时会同时进行一次筛选(判断此对象是否有必要执行finalize方法)。如果对象没有覆盖该方法,就面临死亡,所以说这个方法是对象逃脱死亡命运的最后一次机会。 大家顶我上去,让更多的人看到。看前面没人讲的很详细,如果想深究,去看书。
9.
关于匿名内部类叙述正确的是? ( )
正确答案: B 你的答案: B (正确)
匿名内部类可以继承一个基类,不可以实现一个接口
匿名内部类不可以定义构造器
匿名内部类不能用于形参
以上说法都不正确
匿名内部类的创建格式为: new 父类构造器(参数列表)|实现接口(){
//匿名内部类的类体实现
}
- 使用匿名内部类时,必须继承一个类或实现一个接口
- 匿名内部类由于没有名字,因此不能定义构造函数
- 匿名内部类中不能含有静态成员变量和静态方法
- 补充:.使用匿名内部类时,我们必须继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口
* 2.匿名内部类时不能定义构造函数的
* 3.匿名内部类时不能存在任何的静态成员变量和静态方法
* 4.匿名内部类为局部内部类,所以局部类的限制同样对内部类
* 5.匿名内部类不能是抽象的,它必须要实现继承的类或接口
* 当所在的方法的形参需要被内部类里面使用时,该形参必须为final
* 利用构造代码块能够达到为匿名内部类创建一个构造器的效果