java guide面试突击版

1.重载,重写

方法签名:方法名+参数列表。返回类型不是方法签名的一部分

static修饰的方法不能被重写,因为重写基于运行时动态绑定。而static方法在编译期就和类绑定了。但是被static方法可以再次声明

2.String 类中使⽤ final 关键字修饰字符数组来保存字符串, private final char value[] ,所以 String 对象是不可变的
StringBuilder StringBuffer 都继承⾃ AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使⽤字符数组保存字符串 char[]value 但是没有⽤ final 关键字修饰,

所以这两种对象都是可变的。

String 中的对象是不可变的,也就可以理解为常量,线程安全。


3. Java 中定义⼀个不做事且没有参数的构造⽅法的作⽤
Java 程序在执⾏⼦类的构造⽅法之前,如果没有⽤ super() 来调⽤⽗类特定的构造⽅法,则会调
⽤⽗类中没有参数的构造⽅法。因此,如果⽗类中只定义了有参数的构造⽅法,⽽在⼦类的构
造⽅法中⼜没有⽤ super() 来调⽤⽗类中特定的构造⽅法,则编译时将发⽣错误,因为 Java
序在⽗类中找不到没有参数的构造⽅法可供执⾏。解决办法是在⽗类⾥加上⼀个不做事且没有参
数的构造⽅法。

4. Java 序列化中如果有些字段不想进⾏序列化,怎么办?
对于不想进⾏序列化的变量,使⽤ transient 关键字修饰。
transient 关键字的作⽤是:阻⽌实例中那些⽤此关键字修饰的的变量序列化;当对象被反序列化
时,被 transient 修饰的变量值不会被持久化和恢复。 transient 只能修饰变量,不能修饰类和⽅


5. 获取⽤键盘输⼊常⽤的两种⽅法
⽅法 1:通过 Scanner

Scanner input = new Scanner(System.in);
String s = input.nextLine();
input.close();

⽅法 2:通过 BufferedReader

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String s = input.readLine();

6. Java IO 流分为⼏种?
按照流的流向分,可以分为输⼊流和输出流;
按照操作单元划分,可以划分为字节流和字符流;
按照流的⻆⾊划分为节点流和处理流

原文地址:https://www.cnblogs.com/midiyu/p/15140704.html