给我一些java高难度判断题
时间: 2023-10-18 10:25:49 浏览: 36
好的,以下是几个 Java 高难度判断题,希望能够帮助你提高对 Java 的理解。
1. 以下代码执行结果是什么?
```java
String str1 = "abc";
String str2 = "abc";
System.out.println(str1 == str2);
```
答案:true
解释:在 Java 中,如果使用双引号创建字符串,会先在常量池中查找是否有相同的字符串,如果有,则直接返回该字符串的引用;如果没有,则在常量池中创建一个新的字符串,并返回它的引用。因此,上述代码中,str1 和 str2 都是指向常量池中的同一个字符串对象。
2. 以下代码执行结果是什么?
```java
int i = 10;
i = i++;
System.out.println(i);
```
答案:10
解释:在 Java 中,i++ 表示先使用 i 的值,然后再将 i 的值加 1;而 ++i 表示先将 i 的值加 1,然后再使用 i 的值。因此,i = i++ 的实际执行顺序是先将 i 的值保存在一个临时变量中,然后将 i 的值加 1,最后再将保存的值赋给 i,所以 i 的值不变。
3. 以下代码执行结果是什么?
```java
int i = 0;
try {
i = 10 / 0;
} catch (Exception e) {
i = -1;
} finally {
i = 1;
}
System.out.println(i);
```
答案:1
解释:在 try-catch-finally 中,不管是否发生异常,finally 中的代码都会被执行。因此,上述代码中,i 的值会被赋为 1。
4. 以下代码执行结果是什么?
```java
public static void main(String[] args) {
new Test();
}
static class Test {
static {
System.out.println("static block");
}
}
```
答案:static block
解释:在 Java 中,当一个类被加载时,会先执行其中的静态代码块。因此,上述代码中,当 Test 类被加载时,会输出 "static block"。
希望这些高难度判断题能够帮助你提高对 Java 的理解。