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

1. Java中的String是不可变的,这意味着什么?

答案

  • String对象一旦创建,其内容不能被修改。
  • 每次对String对象进行修改操作(如拼接、替换等)时,实际上会创建一个新的String对象。
  • 示例:
    String str = "hello";
    str = str + " world"; // 实际上创建了一个新的String对象
    
  • 不可变性的好处:
    1. 线程安全String对象可以被多个线程共享,而不需要额外的同步。
    2. 缓存优化:JVM可以缓存常用的String对象(如字符串常量池)。
    3. 安全性:防止恶意代码篡改字符串内容。

2. Java中的垃圾回收机制是什么?

答案

  • Java的垃圾回收机制是一种自动内存管理机制,用于回收不再使用的对象所占用的内存。
  • 垃圾回收器(GC)会定期扫描堆内存,识别并回收那些没有被任何引用指向的对象。
  • 示例:
    Object obj = new Object();
    obj = null; // obj不再指向对象,对象成为垃圾回收的目标
    System.gc(); // 建议JVM运行垃圾回收器(不保证立即执行)
    
  • 垃圾回收机制的优点:
    1. 减少内存泄漏:自动回收无用对象,减少内存泄漏的风险。
    2. 简化内存管理:开发者无需手动管理内存分配和释放。

3. Java中的autoboxingunboxing是什么?

答案

  • 自动装箱(Autoboxing):将基本数据类型自动转换为对应的包装类类型。
    Integer i = 10; // 自动装箱,将int转换为Integer
    
  • 自动拆箱(Unboxing):将包装类类型自动转换为对应的基本数据类型。
    int j = new Integer(20); // 自动拆箱,将Integer转换为int
    
  • 示例:
    Integer a = 10; // 装箱
    int b = a; // 拆箱
    
  • 自动装箱和拆箱简化了代码,但需要注意性能问题,因为每次装箱或拆箱都会创建新的对象。

4. Java中的==equals()有什么区别?

答案

  • ==

    • 用于比较两个变量的值是否相等。
    • 对于对象类型,比较的是对象的内存地址(引用)。
    • 示例:
      int a = 10;
      int b = 10;
      System.out.println(a == b); // true
      
      String s1 = new String("hello");
      String s2 = new String("hello");
      System.out.println(s1 == s2); // false
      
  • equals()

    • Object类的方法,用于比较两个对象的内容是否相等。
    • 默认情况下比较对象的内存地址,但可以被子类重写以实现自定义的比较逻辑。
    • 示例:
      String s1 = new String("hello");
      String s2 = new String("hello");
      System.out.println(s1.equals(s2)); // true
      

总结==用于比较引用或基本数据类型的值,而equals()用于比较对象的内容。

5. Java中的==equals()有什么区别?

答案

  • ==

    • 用于比较两个变量的值是否相等。
    • 对于对象类型,比较的是对象的内存地址(引用)。
    • 示例:
      int a = 10;
      int b = 10;
      System.out.println(a == b); // true
      
      String s1 = new String("hello");
      String s2 = new String("hello");
      System.out.println(s1 == s2); // false
      
  • equals()

    • Object类的方法,用于比较两个对象的内容是否相等。
    • 默认情况下比较对象的内存地址,但可以被子类重写以实现自定义的比较逻辑。
    • 示例:
      String s1 = new String("hello");
      String s2 = new String("hello");
      System.out.println(s1.equals(s2)); // true
      

总结==用于比较引用或基本数据类型的值,而equals()用于比较对象的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值