每周10道 Java 口试题由 ImportNew 整理编译自网络。
口试题谜底接头请移步:https://github.com/jobbole/java-interview/issues/1
Java口试题投递交换请移步:https://github.com/jobbole/java-interview/issues/2
1. 写出下面代码的运行功效。
int src = 65536; Integer dst = new Integer(65536); System.out.println(src == dst); System.out.println(dst.equals(src));
谜底:true true
考点:Integer 的 equals 实现。查察源代码可以发明,65536 装箱为 Integer 工具后,dst.equals 要领较量的是 obj.intValue。
public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; }
2. 写出下面代码执行功效。
// 1. 打印 null String String s = null; System.out.println(s); // 2. 打印 null Integer Integer i = null; System.out.println(i); // 3. 打印 str String str = null; str = str + "!"; System.out.println(str);
谜底:
null null null!
考点:打印函数 print 与字符串拼接函数对 null 都举办了非凡处理惩罚,因此不会呈现运行时异常,而是输入出 “null” 字符串。
细节阐明可拜见 Importnew:Java String 对 null 工具的容错处理惩罚 一文。
3. 写出下面代码的运行功效。
public class Example { private static void sayHello() { System.out.println("Hello"); } public static void main(String[] args) { ((Example)null).sayHello(); } }
谜底:Hello
考点:null 作为非根基范例,可以做范例转换,转换后挪用静态要领输出字符串。根基范例,好比 int,范例转换时会陈诉空指针异常,好比 int a = (Integer)null; 原因就是转换进程中会挪用 intValue(),劳务派遣管理系统,因此会陈诉异常。
4. String类能被担任吗,为什么?
谜底:不能。因为 String 类的界说为 final class,被 final 修饰的类不能被担任。
public final class String
考点:String 工具不行变的(immutable)。阐明为什么要这么设计,大概有以下3个原因:
5. 写出下面代码的运行功效。
String s1 = "Cat"; String s2 = "Cat"; String s3 = new String("Cat"); System.out.println("s1 == s2 :"+(s1==s2)); System.out.println("s1 == s3 :"+(s1==s3));
谜底:
s1 == s2 :true s1 == s3 :false
考点:领略 String pool,s1 与 s2 字符串内容沟通,因此直接从 String pool 中返回沟通的地点。s3 会建设一个新的 String 工具,因此 s1==s3 功效返回 false。
6. String s3 = new String(“Cat”) 这句代码会建设几个 String 工具?
谜底:1 或 2 个。
考点:领略 String pool 机制。假如 Spring pool 在执行语句之前没有 “Cat” 工具,那么会建设 2 个 String;反之只建设 1 个 String 工具,”Cat” 会从 String pool 中直接返回工具。
7. String、StringBuffer、StringBuilder的区别?
谜底:有以下区别:
8. 如何较量两个字符串?利用 “==” 照旧 equals() 要领?