牛客网Java基础习题总结
第一题
- 本地方法:简单的讲,一个native Method就是一个Java调用非Java代码的接口。native方法表示该方法要用另外一种依赖平台的编程语言实现
- 最终方法:final void F(){},这样定义的方法就是最终方法,最终方法在于子类中不可以被重写。
- 最终类:final class A{},这样定义的类就是最终类,最终类不能被继承。
- abstract修饰抽象类。
第二题
- 静态块:用static申明,JVM加载类时执行,仅执行一次。
- 构造块:类中直接用{}定义,每一次创建对象时执行。
执行顺序优先级:静态块>main()>构造块>构造方法
以下代码执行后的输出结果为:aba
1 | public class Test |
第三题
可以附加或更新文件的I/O类:RandomAccessFile()
Error(错误):是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,一般不需要程序处理。
检查异常(编译器要求必须处理的异常):除了Error,RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获他,要么用throws子句声明抛出它,否则编译不会通过。
非检查异常(编译器不要求处置的异常):包括运行时异常(RuntimeException与其子类)和错误(Error)。
第四题
StringBuilder,StringBuffer和String都是final的,但是为什么STringBuilder,StringBuffer可以进行修改呢,因为不可变包括的是,引用不可变以及对象不可变,而这三个都是属于引用不可变(可就是地址不要变,里面的内容可以变),而StringBuilder,StringBuffer中都包含有append方法,可对对象中的内容进行增加。而 String a = “123” + new String(“456”)实际上底层是用了一个StringBuffer进行append。
第五题
多态的作用:
- 不必编写每一子类的功能调用,可以直接把不同子类当父类看,屏蔽子类间的差异,提高代码的通用率/复用率。
- 父类引用可以调用不同子类的功能,提高了代码的可扩充性和维护性。