牛客网错题汇总:

1.有关静态初始化块说法正确的是?
正确答案: A B C 你的答案: A B D (错误)
A 无法直接调用静态初始化块
B 在创建第一个实例前或引用任何静态成员之前,将自动调用静态初始化块来初始化
C 静态初始化块既没有访问修饰符,也没有参数
D 在程序中,用户可以控制合适执行静态初始化块
///////静态初始化不能由用户控制执行;
2.StringBuffer类对象创建之后可以再修改和变动.
正确答案: A 你的答案: B (错误)
A正确
B错误
3.
byte b1=1,b2=2,b3,b6,b8;byte b1=1,b2=2,b3,b6,b8;
final byte b4=4,b5=6,b7;
b3=(b1+b2); /语句1/
b6=b4+b5; /语句2/
b8=(b1+b4); /语句3/
b7=(b2+b5); /语句4/
System.out.println(b3+b6);

上述代码片段中,存在编译错误的语句是(BCD)
A 语句2
B语句1
C语句3
D语句4

4.从运行层面上来看,从四个选项选出不同的一个()
A. JAVA
B. Python
C.objectC
D. C#
5.java用()机制实现了进程之间的同步执行
正确答案: A 你的答案: B (错误)
A.监视器
B.虚拟机
C.多个CPU
D.异步调用
同步块和同步方法:
对于同步来说都是使用synchronized方法
每一个对象都有一个监视器,或者叫做锁。

6. 下列哪个选项是合法的标识符?()
A 123
B_name
C class
D first
正确答案:B D
Java标识符由 数字、字母、下划线(_)、美元符号($) 组成, 首位不能是数字 。并且 Java关键字不能作为标识符 。

7.写出下列程序段的结果:
public class Test
{
public static void changeStr(String str)
{
str = “welcome”;
}
public static void main(String[] args)
{
String str = “1234”;
changeStr(str);
System.out.println(str);
}
}
正确答案:1234;
此处应该考察Java方法参数传递特性。Java方法调用中,只存在值传递调用。
此处,实参str是引用变量,由于java方法调用是值传递,所以形参str得到的是实参str的一个拷贝。此时形参str和实参str均指向字符串"1234"。
然后,在changeStr方法中,形参str指向了一个新的字符串"welcom",而后方法结束,形参str被销毁。而实参str仍然指向字符串"1234"。

8.下列说法错误的是
Java致力于检查程序在编译和运行时的错误
Java能运行虚拟机实现跨平台
Java自己操纵内存减少了内存出错的可能性
Java还实现了真数组,避免了覆盖数据类型的可能
.正确答案: D 你的答案: B (错误)

9.volatile关键字的说法错误的是
正确答案: A 你的答案: B (错误)
能保证线程安全
volatile关键字用在多线程同步中,可保证读取的可见性
JVM保证从主内存加载到线程工作内存的值是最新的
volatile能禁止进行指令重排序
10.静态内部类不可以直接访问外围类的非静态数据,而非静态内部类可以直接访问外围类的数据,包括私有数据。( )
正确答案:正确
解析:静态方法不可以直接访问外围类的非静态数据,可以通过创建该外围类的实例来调用非静态方法和数据;

11.以下代码块的结果是什么?
public class Test {
public int aMethod(){
static int i = 0;
i++;
return i;
}
public static void main(String args[]){
Test test = new Test();
test.aMethod();
int j = test.aMethod();
System.out.println(j);
}
}
解释:编译错误;因为static静态变量只能在类主体上定义,不能再方法中定义;

12.关于sleep和wait,以下描述错误的是
正确答案: D 你的答案: D (正确)
sleep是线程类的方法,wait是object的方法
sleep不释放对象锁,wait放弃对象锁
sleep暂停线程,但监控状态依然保持,结束后会自动恢复
wait进入等待锁定池,只有针对此对象发出notify方法获得对象锁进入运行状态

13.下面代码的输出结果是什么?
public class ZeroTest {
public static void main(String[] args) {
try{
int i = 100 / 0;
System.out.print(i);
}catch(Exception e){
System.out.print(1);
throw new RuntimeException();
}finally{
System.out.print(2);
}
System.out.print(3);
}
}
正确答案: D 你的答案: D (正确)

3
123
1
12
首先执行try,遇到算术异常,抛出,执行catch,打印1,然后抛出RuntimeException,缓存异常,执行finally,打印2,然后抛出RuntimeException。
如果catch中没有抛出RuntimeException,则执行结果为123。

扫描二维码关注公众号,回复: 5797558 查看本文章

13.以下程序运行的结果为()
public class Example extends Thread{
@Override
public void run(){
try{
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
System.out.print(“run”);
}
public static void main(String[] args){
Example example=new Example();
example.run();
System.out.print(“main”);
}
}
正确答案: A 你的答案: E (错误)

run main
main run
main
run
不能确定

关于继承:
子类的构造方法总是先调用父类的构造方法,如果子类的构造方法没有明显地指明使用父类的哪个构造方法,子类就调用父类不带参数的构造方法。
而父类没有无参的构造函数,所以子类需要在自己的构造函数中显示的调用父类的构造函数。
如果超类没有不带参数的构造器,并且在子类的构造器中有没有显示地调用超类的其他构造器,则Java编译器将报告错误。使用super调用构造器的语句必须是子类构造器的第一条语句。

猜你喜欢

转载自blog.csdn.net/zhangpupu320/article/details/83416220