探索 Java 中 String 的本质,从 char 说起

String 类可以认为是 Java 语言中最为常用的类了,对于 String 的理解更是 Java 面试题的常客。
但作为一个 Java 程序员,对于 String 是否足够了解了呢?
本篇文章将对 String的存储,使用做一个详细的探讨。


先来简单介绍下 StringString是 JDK 提供的位于 java.lang 中的基础类,但区别于 byte,short,int,long,char,boolean,float,double这些基本类型,String不是基本数据类型,而是一个类。
因为是类,实例化的String 对象的空值为 null,但String是如此常用,于是 JDK 对其有特殊的优化。

阅读更多

Java 异常踩坑总结与最佳实践


static final 实例

enum 的构造

构造方法

初始化顺序

EnumMap 和 EnumSet

总结


参考资料

[1] 《Java 编程思想》

Java 异常踩坑总结与最佳实践

Java 编程时,总会遇到可预见或不可预知的异常情况,程序如何处理好这些异常是保证程序稳定健壮的无比重要。对于 Java,通过 Throwable 类的众多子类来描述程序遇到的各类异常,主要分为 ExceptionError

  • Error: 一般指虚拟机相关问题,如系统崩溃,内存不足,调用栈溢出等严重问题,需要程序终止解决。
  • Exception:程序可预测解决的异常,如访问异常文件导致的 IO 异常,或者用户自定义的异常,此类异常通过合理处理,可不造成程序中断,保障了程序健壮性。Exception 中最主要的,又分为:
    • 检查异常(checked exception):若抛出此异常,方法后必须强制以 throws 关键字进行抛出声明,例如 IOException
    • 非检查异常(unchecked exception):无需抛出声明,**RuntimeException 均属于非检查异常**,例如 NullPointerException, IndexOutOfBoundsException 等。

对于如何处理异常,Java 采用的方法就是 try...catch...finallytry 所括代码,称为监控区域(guarded region),该区域内所有代码抛出的异常,会被 catch 中匹配的 Exception 分支所捕获,此处父类可捕获子类异常,最后在 finally 中处理收尾。

try...catch...finally 本身不难理解,但原理上也有一些需要注意的地方,下文也总结了些使用技巧。

阅读更多