java面试笔试题大汇总(3).docx
java面试笔试题大汇总(3)
一、选择题
1.以下关于Java中`String`类的说法,正确的是()
A.`String`类是不可变类,一旦创建,其值不能被改变
B.`String`类的对象可以使用`new`关键字创建,也可以直接使用双引号创建
C.对`String`对象进行拼接操作会创建新的`String`对象
D.以上说法都正确
答案:D
解析:
A选项:`String`类是不可变类,当创建一个`String`对象后,其内部的字符序列不能被改变。例如`Stringstr=abc;`,之后对`str`进行重新赋值或者拼接等操作,实际上是创建了新的`String`对象,而原对象的内容并未改变。
B选项:可以使用`new`关键字创建`String`对象,如`Strings1=newString(hello);`,也可以直接使用双引号创建,如`Strings2=world;`。
C选项:当对`String`对象进行拼接操作时,会创建新的`String`对象。例如`Strings3=abc;Strings4=s3+def;`,这里的`s4`是一个新的`String`对象。
2.以下代码的输出结果是()
```java
publicclassMain{
publicstaticvoidmain(String[]args){
int[]arr={1,2,3,4,5};
System.out.println(arr[5]);
}
}
```
A.5
B.编译错误
C.运行时抛出`ArrayIndexOutOfBoundsException`异常
D.以上都不对
答案:C
解析:在Java中,数组的索引是从0开始的。对于长度为5的数组`arr`,其有效索引范围是0到4。代码中`arr[5]`试图访问数组中索引为5的元素,超出了数组的有效索引范围,因此会在运行时抛出`ArrayIndexOutOfBoundsException`异常。
3.以下关于Java中`static`关键字的说法,错误的是()
A.`static`修饰的变量属于类,而不属于类的实例
B.`static`修饰的方法可以通过类名直接调用,也可以通过对象实例调用
C.`static`修饰的代码块会在类加载时执行,且只执行一次
D.`static`方法中可以使用`this`关键字
答案:D
解析:
A选项:`static`修饰的变量是类变量,它被类的所有实例共享,不属于某个具体的实例。例如`classMyClass{staticintnum=10;}`,`num`是类变量。
B选项:`static`修饰的方法可以通过类名直接调用,如`MyClass.staticMethod();`,也可以通过对象实例调用,不过不推荐后者,因为它会让人误解该方法与对象实例有关。
C选项:`static`代码块会在类加载时执行,且只执行一次。例如:
```java
classMyClass{
static{
System.out.println(Staticblockexecuted);
}
}
```
D选项:`this`关键字代表当前对象实例,而`static`方法属于类,不依赖于对象实例,因此在`static`方法中不能使用`this`关键字。
二、填空题
1.Java中用于创建线程的两种方式是继承`______`类和实现`______`接口。
答案:`Thread`;`Runnable`
解析:
继承`Thread`类:创建一个类继承`Thread`类,重写`run()`方法,然后创建该类的对象并调用`start()`方法启动线程。例如:
```java
classMyThreadextendsThread{
@Override
publicvoidrun(){
System.out.println(Threadisrunning);
}
}
//使用
MyThreadthread=newMyThread();
thread.start();
```
实现`Runnable`接口:创建一个类实现`Runnable`接口,实现`run()`方法,然后将该类的对象作为参