java基础面试题(三)

  1. Integer 与 int 有什么区别?
    答:Integer是引用数据类型,默认值是null。int是基本数据类型,默认值是0。Integer是int的封装类,提供了一些操作数据的方法。

  2. 作用域 public,private,protected,以及default有什么区别?

作用域 当前类 同一package 子类 其他package
public
protected ×
default × ×
private × × ×
  1. String,StringBuffer和 StringBuilder使用equals()方法比较对象有什么区别?
    直接上代码测试:
public class TestMain {
    public static void main(String[] args) throws Exception {
        String a = new String("TEST");
        String b = new String("TEST");
        System.out.println(a.equals(b));
        StringBuffer stringBuffer = new StringBuffer("TEST");
        StringBuffer stringBuffer1 = new StringBuffer("TEST");
        System.out.println(stringBuffer.equals(stringBuffer1));
        StringBuilder stringBuilder = new StringBuilder("TEST");
        StringBuilder stringBuilder1 = new StringBuilder("TEST");
        System.out.println(stringBuilder.equals(stringBuilder1));
    }
}

运行结果如下:
在这里插入图片描述
得出结论,String类重写了equals()方法,所以结果是相等的,而StringBuffer类和StringBuilder类没有重写equals()方法,所以结果是false。

  1. 如何把一段逗号分割的字符串转换成一个数组?
    答:通过String类的split()方法。

  2. 数组有没有 length()这个方法? String 有没有 length()这个方法?
    答:数组没有这个方法,但是有这个属性。String有这个方法。

  3. String var="aa"和String var=new String(“aa”)一样么?
    答:不一样,他们内存的分配方式不同。String var="aa"这个方式的var变量的引用对象"aa"会被虚拟机直接分配到常量池里,String var=new String(“aa”)这个方式用new关键字创建了对象,所以会被虚拟机分配到堆内存中。

  4. 抽象类必须要有抽象方法么?
    答:不需要。抽象类没有抽象方法,一样能正常运行。

  5. 普通类和抽象类有什么不同的?
    答:普通类不能有抽象方法,可以实例化。抽象类可以有抽象方法,但是不能实例化。

  6. 接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可以继承具体类(concrete class)?抽象类中是否可以有静态的main 方法?
    答:接口可以继承接口。抽象类可以实现接口。抽象类可以继承具体类。抽象类中可以有静态的main 方法。除了不能实例化和可以有抽象方法外,抽象类其他的行为都和普通类一样。

  7. 写 clone()方法时,通常都有一行代码,是什么?
    答:super.clone(),如下图:
    在这里插入图片描述
    要这样的的原因是子类要先把父类中的成员复制到位,才能复制自己的成员。

发布了156 篇原创文章 · 获赞 138 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/104135403