1. Java中的switch
语句是否支持字符串?
答案:
从Java 7开始,switch
语句支持字符串作为条件表达式。字符串的比较基于equals()
方法。
示例:
String day = "Monday";
switch (day) {
case "Monday":
System.out.println("First day of the week");
break;
case "Tuesday":
System.out.println("Second day of the week");
break;
default:
System.out.println("Other day");
}
注意:switch
语句中的字符串比较是基于equals()
方法,因此比较的是字符串的内容,而不是引用。
2. Java中的Integer
和int
有什么区别?
答案:
-
int
:- 是Java的基本数据类型之一,占用4个字节(32位)。
- 只能存储整数值,不能调用方法或继承。
- 示例:
int num = 10;
-
Integer
:- 是
int
的包装类,属于java.lang
包。 - 可以调用方法,例如
toString()
、valueOf()
等。 - 支持自动装箱(
autoboxing
)和自动拆箱(unboxing
)。 - 示例:
Integer num = 10; // 自动装箱 int value = num; // 自动拆箱
- 是
总结:int
是基本数据类型,而Integer
是包装类,支持更多功能但可能会带来额外的性能开销。
3. Java中的enum
是什么?如何使用?
答案:
enum
是Java 5引入的一种特殊的数据类型,用于定义一组常量。enum
可以包含方法、字段和构造器。
示例:
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
public String getDescription() {
switch (this) {
case MONDAY: return "First day of the week";
case TUESDAY: return "Second day of the week";
case WEDNESDAY: return "Middle of the week";
case THURSDAY: return "Almost weekend";
case FRIDAY: return "Weekend is coming";
case SATURDAY: return "Weekend!";
case SUNDAY: return "Last day of the week";
default: return "Unknown day";
}
}
}
public class EnumExample {
public static void main(String[] args) {
Day day = Day.MONDAY;
System.out.println(day.getDescription());
}
}
输出:
First day of the week
4. Java中的try-with-resources
是什么?
答案:
try-with-resources
是Java 7引入的一种语法糖,用于自动关闭实现了AutoCloseable
接口的资源(如文件流、数据库连接等)。
示例:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class TryWithResourcesExample {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
优点:
- 自动关闭资源,避免忘记调用
close()
方法。 - 减少代码冗余,提高代码可读性。
5. Java中的Comparable
和Comparator
有什么区别?
答案:
-
Comparable
接口:- 用于定义对象的自然排序顺序。
- 通过实现
compareTo()
方法,可以对对象进行比较。 - 示例:
public class Person implements Comparable<Person> { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public int compareTo(Person other) { return this.age - other.age; // 按年龄排序 } }
-
Comparator
接口:- 用于定义对象的自定义排序顺序。
- 通过实现
compare()
方法,可以对对象进行比较。 - 示例:
import java.util.*; public class ComparatorExample { public static void main(String[] args) { List<Person> people = Arrays.asList( new Person("Alice", 30), new Person("Bob", 25) ); Collections.sort(people, new Comparator<Person>() { @Override public int compare(Person p1, Person p2) { return p1.getName().compareTo(p2.getName()); // 按姓名排序 } }); people.forEach(System.out::println); } }
总结:
Comparable
定义了对象的自然排序顺序。Comparator
定义了对象的自定义排序顺序,可以有多个。