Java-笔试题02

面试题02

1.构造方法是否可被 override?

构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload,Constructor不能被继承,所以Constructor也就不能被override。每一个类必须有自己的构造函数,负责构造自己这部分的构造。子类不会覆盖父类的构造函数,相反必须负责在一开始调用父类的构造函数。

2.接口是否可继承接口、实现(implements)接口? 抽象类是否可继承具体(concrete class)?抽象类中是否可以有静态的 main 方法?

1.接口可以继承接口..但是要使用extends~而不是用implements
2.抽象类可以实现接口..比如java.util中的AbstractCollection类就是实现的Collection接口
3.抽象类中可以有静态的main方法  

demo.png

3.内部类可以引用它的包含类的成员吗?有没有什么限制?

 完全可以。如果不是静态内部类,那没有什么限制! 一个内部类对象可以访问创建它的外部类对象的成员包括私有成员。

4.java 中实现多态的机制是什么?

 方法重载,方法重写
 java中实现多态的机制是依靠父类或接口的引用指向子类。从而实现了一个对象多种形态的特性。其中父类的引用是在程序运行时动态的指向具体的实例,调用该引用的方法时,不是根据引用变量的类型中定义的方法来运行,而是根据具体的实例的方法。

5.面向对象的特征有哪些方面

面向对象编程有三大特性:封装、继承、多态。

6.String s = 'Hello';s = s + ' world!';这两行代码执行后,原始的 String 对象中的 内容到底变了没有?

没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是 "Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"Hello world!",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。

7.String s = new String('xyz');创建了几个 String Object? 二者之间有什么区别?

创建了两个对象,先创建的对象保存在常量池中,即.class文件中,在编译时就已经确定new String对象的时候,又创建了一个对象保存在内存中,在运行时确定String s = new String("xyz"); //先常量池再内存String s1="xyz"; //常量池

8.StringStringBuffer 的区别

String 是不可更改的

  • 1.字符串都是对象
  • 2.一旦初始化就不可以被更改,因为是常量
  • 3.通过String类的构造方法就知道,将字符串数组或者字符转化为字符串

StringBuffer 线程安全 同步

  • 1.是一个长度可变的
  • 2.容器 缓冲区
  • 3.可以操作多个数据类型的
  • 4.最终通过toSTring方法返回字符串类型

9.如何把一段逗号分割的字符串转换成一个数组?

    public static void main(String[] args) {
        String str = "abc,def,ghij,klmn,opq";
        String[] result = str.split(",");
        for (int i = 0; i < result.length; i++) {
            System.out.println(result[i]);
        }
    }

请输入图片描述

10.数组有没有 length()这个方法? String 有没有 length()这个方法?

数组没有length()这个方法,有length的属性。String有有length()这个方法。
最后修改:2019 年 09 月 10 日 07 : 40 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论