31 道 Java 核心面试题,统统打包给你( 六 )


31 道 Java 核心面试题,统统打包给你

文章插图
private 可以用来修饰类的构造方法、字段和方法 , 只能被当前类进行访问 。protected 也可以用来修饰类的构造方法、字段和方法 , 但它的权限范围更宽一些 , 可以被同一个包中的类进行访问 , 或者当前类的子类 。
可以通过下面这张图来对比一下四个权限修饰符之间的差别:
31 道 Java 核心面试题,统统打包给你

文章插图
  • 同一个类中 , 不管是哪种权限修饰符 , 都可以访问;
  • 同一个包下 , private 修饰的无法访问;
  • 子类可以访问 public 和 protected 修饰的;
  • public修饰符面向世界 , 哈哈 , 可以被所有的地方访问到 。
23、什么是 final 关键字?
final 关键字修饰类的时候 , 表示该类无法被继承 。比如 , String 类就是 final 的 , 无法被继承 。
final 关键字修饰方法的时候 , 表示子类无法覆盖它 。
final 关键字修饰变量的时候 , 表示该变量只能被赋值一次 , 尽管变量的状态可以更改 。
24、什么是 static 关键字?
static 关键字可以用来修饰类变量 , 使其具有全局性 , 即所有对象将共享同一个变量 。
static 关键字可以用来修饰方法 , 该方法称为静态方法 , 只可以访问类的静态变量 , 并且只能调用类的静态方法 。
31 道 Java 核心面试题,统统打包给你

文章插图
第四波
25、finally 和 finalize 有什么区别?
finally 通常与 try-catch 块一起使用 , 即使 try-catch 块引发了异常 , finally 块中的代码也会被执行 , 用于释放 try 块中创建的资源 。
finalize 是 Object 类的一个特殊方法 , 当对象正在被垃圾回收时 , 垃圾收集器将会调用该方法 。可以重写该方法用于释放系统资源 。
26、可以将一个类声明为 static 的吗?
不能将一个外部类声明为 static 的 , 但可以将一个内部类声明为 static 的——称为静态内部类 。
27、什么是静态导入?
如果必须在一个类中使用其他类的静态变量或者静态方法 , 通常我们需要先导入该类 , 然后使用“类名.变量/方法”的形式调用 。
 import java.lang.Math;
double test = Math.PI * 5;
也可以通过静态导入的方式 , 就不需要再使用类名了 。
 import static java.lang.Math.PI;
double test = PI * 5;
不过 , 静态导入容易引发混乱(变量名或者方法名容易冲突) , 因此最好避免使用静态导入 。
28、什么是 try-with-resources?
try-with-resources 是 Java 7 时引入的一个自动资源管理语句 , 在此之前 , 我们必须通过 try-catch-finally 的方式手动关闭资源 , 当我们忘记关闭资源的时候 , 就容易导致内存泄漏 。
29、什么是 multi-catch?
Java 7 改进的另外一个地方就是 multi-catch , 可以在单个 catch 中捕获多个异常 , 当一个 try 块抛出多个类似的异常时 , 这种写法更短 , 更清晰 。
 catch(IOException | SQLException ex){
logger.error(ex);
throw new MyException(ex.getMessage);
}
当有多个异常的时候 , 可以使用管道表示符“|”隔开 。
30、什么是 static 块?
static 块是由 Java ClassLoader 将类加载到内存中时执行的代码块 。通常用于初始化类的静态变量或者创建静态资源 。
31、什么是接口?
接口是 Java 编程语言中的一个核心概念 , 不仅在 JDK 源码中使用很多 , 还在 Java 设计模式、框架和工具中使用很多 。接口提供了一种在 Java 中实现抽象的方法 , 用于定义子类的行为约定 。
说句实在话 , 这 31 道 Java 核心面试题在面试的过程中还是很常见的 , 值得好好复习一遍 。关键是还有下一波 , 同样 31 道 , 望眼欲穿吧?




推荐阅读