java 基础知识面试题

https://blog.csdn.net/yeyazhishang/article/details/102886489

https://www.cnblogs.com/zwwhnly/p/10826530.html

1. == 和 equals 区别?

  == : 判断是否指向同一内存地址,Object的equals 就是用 == 实现的,如果想判断两个对象是否

 相等,可以覆写 equals 方法,比如String、Data

        String strA = new String("hello");
        String strB = new String("hello");

        System.out.println(strA ==strB); //false
        System.out.println(strA.equals(strB)); //true

2. 覆写equals 时,为什么要覆写hashCode 方法?

  如果不覆写hashCode方法,比如 HashMap 等容器,首先会使用hash来判断,如果两个对象相等,则hash 默认为是相等的,

   HashMap中部分源码:

  Node<K,V> e; K k;
            if (p.hash == hash &&
                ((k = p.key) == key || (key != null && key.equals(k))))
                e = p;

  所以为了使用容器不出错,最好覆写hashCode 方法。

3. List 和 Set 区别?

    List :允许重复的元素、有序的;

    Set: 不允许重复的元素、无序的;

    ArrayList的初始容量是10,加载因子为0.5; 

    HashMap、HashSet,初始容量16,加载因子为0.75;

4. java String, StringBuffer ,StringBulider 区别  

    1)String 是不可变的(immutable); 创建后不能修改;

    2)StringBuffer 线程安全的,可变字符串;

    3)StringBuilder 线程不安全,所以性能比较高

5. static 应用场景? 

   1)只想用一个存储区域来保存一个特定的数据,不需要创建对象;
   2)没有创建对象,也能调用方法;

6. 到底选择合成还是继承?   

  一个最简单的办法就是考虑是否需要从新类上溯造型回基础类。若必须上溯,就
   需要继承。但如果不需要上溯造型,就应提醒自己防止继承的滥用。

   上溯造型(upcasting):

//: Wind.java
// Inheritance & upcasting
import java.util.*;
class Instrument {
public void play() {}
static void tune(Instrument i) {
// ...
i.play();
}
}
// Wind objects are instruments
// because they have the same interface:
class Wind extends Instrument {
public static void main(String[] args) {
Wind flute = new Wind();
Instrument.tune(flute); // Upcasting

7. protected

    1) 子类和同一包内的其他可以访问

    在实际应用中,经常想把某些东西深深地藏起来,但同时允许访问衍生类的成员。

   

//: Orc.java
// The protected keyword
import java.util.*;
class Villain {
private int i;
protected int read() { return i; }
protected void set(int ii) { i = ii; }
public Villain(int ii) { i = ii; }
public int value(int m) { return m*i; }
}
public class Orc extends Villain {
private int j;
public Orc(int jj) { super(jj); j = jj; }
public void change(int x) { set(x); }
} ///:~

 

posted @ 2019-11-08 19:23  newlangwen  阅读(138)  评论(0编辑  收藏  举报