java基础面试题5道开胃菜(四)

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中的Integerint有什么区别?

答案

  • 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中的ComparableComparator有什么区别?

答案

  • 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定义了对象的自定义排序顺序,可以有多个。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值