JDK_API剖析之java.lang包

时间:2022-07-04 18:52:26

java.lang是Java语言的基础包,默认包中的所有来自动import到你写的类中。(按照字母排序)

1、AbstractMethodError

  • 类、错误
  • 自1.0开始有
  • 继承自IncompatibleClassChangeError
  • 当应用程序试图调用一个抽象方法时,抛出此错误。通常由编译器捕获此错误;如果某个类的定义自当前执行方法最后一次编译以后作了不兼容的更改,则此错误只可能在运行时发生。
  • 有带消息和无参构造函数
  • 没有自定义方法

2、Appendable

  • 接口
  • 自1.5开始有
  • 没有父接口
  • Appendable 对于多线程访问而言没必要是安全的。线程安全由扩展和实现此接口的类负责。
  • 提供了一些append函数,返回值是Appendable接口

3、ArithmeticException

  • 类、异常
  • 自1.0开始有
  • 继承自RuntimeException
  • 当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,抛出此类的一个实例。
  • 有带消息和无参构造函数
  • 没有自定义函数

4、ArrayIndexOutOfBoundsException

  • 类、异常
  • 自1.0开始有
  • 继承自IndexOutOfBoundsException
  • 用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。
  • 有带消息、索引、无参构造函数
  • 没有自定义函数

5、ArrayStoreException

  • 类、异常
  • 自1.0开始有
  • 继承自RuntimeException
  • 试图将错误类型的对象存储到一个对象数组时抛出的异常
  • 有带消息和无参构造函数
  • 没有自定义函数

6、AssertionError

  • 类、错误
  • 自1.4开始有
  • 继承自Error
  • 抛出该异常指示某个断言失败。
  • 有7个单参构造函数
  • 没有自定义函数

7、Boolean

  • final类
  • 自1.0开始有
  • 实现java.io.Serializable,Comparable<Boolean>
  • Boolean 类将基本类型为 boolean 的值包装在一个对象中。一个 Boolean 类型的对象只包含一个类型为 boolean 的字段。此外,此类还为 booleanString 的相互转换提供了许多方法,并提供了处理 boolean 时非常有用的其他一些常量和方法。

8、Byte

  • final类
  • 自1.1开始有
  • 继承自Number,实现Comparable<Byte>
  • Byte 类将基本类型 byte 的值包装在一个对象中。一个 Byte 类型的对象只包含一个类型为 byte 的字段。此外,该类还为 byteString 的相互转换提供了几种方法,并提供了处理 byte 时非常有用的其他一些常量和方法。

  • 常量有byte可取最大值,最小值。

9、Character

  • final类
  • 自1.0开始有
  • 实现java.io.Serializable, Comparable<Character>
  • Character 类在对象中包装一个基本类型 char 的值。Character 类型的对象包含类型为 char 的单个字段。此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然。

10、CharSequence

  • 接口
  • 自1.4开始有
  • 没有父类和接口
  • CharSequencechar 值的一个可读序列。此接口对许多不同种类的 char 序列提供统一的只读访问。

  • 提供了几个字符串常用函数的抽象

11、Class<T>

  • final类
  • 自1.0开始有
  • 实现了java.io.Serializable, GenericDeclaration,Type,AnnotatedElement
  • Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注解是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(booleanbytecharshortintlongfloatdouble)和关键字 void 也表示为 Class 对象。

  • Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。
  • 有一系列操作Class的函数。

12、ClassCastException

  • 类、异常
  • 自1.0开始有
  • 继承自RuntimeException
  • 当试图将对象强制转换为不是实例的子类时,抛出该异常

13、ClassCircularityError

  • 类、错误
  • 自1.0开始有
  • 继承自LinkageError
  • 当初始化类时检测到类的循环调用的时候,抛出该错误。

14、ClassFormatError

  • 类、错误
  • 自1.0开始有
  • 继承自LinkageError
  • 当 Java 虚拟机试图读取类文件并确定该文件存在格式错误或无法解释为类文件时,抛出该错误。

15、ClassLoader

  • 抽象类
  • 自1.0开始有
  • 无父类和接口
  • 类加载器是负责加载类的对象。ClassLoader 类是一个抽象类。如果给定类的二进制名称,那么类加载器会试图查找或生成构成类定义的数据。一般策略是将名称转换为某个文件名,然后从文件系统读取该名称的“类文件”。每个 Class 对象都包含一个对定义它的 ClassLoader引用

16、ClassNotFoundException

  • 类、异常
  • 自1.0开始有
  • 继承ReflectiveOperationException
  • 当应用程序试图使用以下方法通过字符串名加载类时,Class 类中的 forName 方法;ClassLoader 类中的 findSystemClass 方法;ClassLoader 类中的 loadClass 方法,但是没有找到具有指定名称的类的定义。

17、Cloneable

  • 标记接口
  • 自1.0开始有
  • 无父接口
  • 如果一个类实现了 Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。如果在没有实现 Cloneable 接口的实例上调用 Object 的 clone 方法,则会导致抛出 CloneNotSupportedException 异常

  • 没有方法定义

18、CloneNotSupportedException

  • 异常类
  • 自1.0开始有
  • 继承自Exception
  • 当调用 Object 类中的 clone 方法复制对象,但该对象的类没有实现 Cloneable 接口时,抛出该异常。重写 clone 方法的应用程序也可能抛出此异常,指示不能或不应复制一个对象。

19、Comparable<T>

  • 接口
  • 自1.0开始有
  • 无父接口
  • 此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法

  • 有一个方法int compareTo(T o)。比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

20、Compiler

  • final类
  • 自1.0开始有
  • 无父类和接口
  • Compiler 类主要支持 Java 到本机代码的编译器及相关服务。根据设计,Compiler 类不做任何事情,它充当一个 JIT 编译器实现的占位符。

  • 有几个本地方法

21、Double

  • final类
  • 自1.0开始有
  • 集成自Number,实现Comparable<Double>
  • Double 类在对象中包装一个基本类型 double 的值。每个 Double 类型的对象都包含一个 double 类型的字段。此外,该类还提供多个方法,可以将 double 转换为 String,将 String 转换为 double,也提供了其他一些处理 double 时有用的常量和方法。

22、Enum<E extends Enum<E>>

  • 抽象类
  • 自1.5开始有
  • 实现Comparable<E>, Serializable
  • 这是所有 Java 语言枚举类型的公共基本类。

  • 单独的构造方法。程序员无法调用此构造方法。该构造方法用于由响应枚举类型声明的编译器发出的代码。

23、EnumConstantNotPresentException

  • 异常类
  • 自1.5开始有
  • 继承RuntimeException
  • 当应用程序试图通过名称和枚举类型访问那些不包含具有指定名称的常量的枚举常量时,抛出该异常。

24、Error

  • 类、错误
  • 自1.0开始有
  • 继承Throwable
  • ErrorThrowable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然 ThreadDeath 错误是一个“正规”的条件,但它也是 Error 的子类,因为大多数应用程序都不应该试图捕获它。在执行该方法期间,无需在其 throws 子句中声明可能抛出但是未能捕获的 Error 的任何子类,因为这些错误可能是再也不会发生的异常条件

25、Exception

  • 类、异常
  • 自1.0开始有
  • 继承Throwable
  • Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。

26、ExceptionInInitializerError

  • 类、错误
  • 自1.1开始有
  • 继承LinkageError
  • 静态初始化程序中发生意外异常的信号。抛出 ExceptionInInitializerError 表明在计算静态初始值或静态变量的初始值期间发生异常。

27、Float

  • final类
  • 自1.0开始有
  • 继承Number,实现Comparable<Float>
  • Float 类在对象中包装一个基本类型 float 的值。Float 类型的对象包含一个 float 类型的字段。此外,此类提供了几种方法,可将 float 类型与 String 类型互相转换,还提供了处理 float 类型时非常有用的其他一些常量和方法。

28、IllegalAccessException

  • 异常类
  • 自1.0开始有
  • 继承Exception
  • 当应用程序试图反射性地创建一个实例(而不是数组)、设置或获取一个字段,或者调用一个方法,但当前正在执行的方法无法访问指定类、字段、方法或构造方法的定义时,抛出 IllegalAccessException。

29、IllegalArgumentException

  • 异常类
  • 自1.0开始有
  • 继承RuntimeException
  • 抛出的异常表明向方法传递了一个不合法或不正确的参数。

30、IllegalMonitorStateException

  • 异常类
  • 自1.0开始有
  • 继承RuntimeException
  • 抛出的异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程。

31、IllegalStateException

  • 异常类
  • 自1.1开始有
  • 继承RuntimeException
  • 在非法或不适当的时间调用方法时产生的信号。换句话说,即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下。

32、IllegalThreadStateException

  • 异常类
  • 自1.0开始有
  • 继承IllegalArgumentException
  • 指示线程没有处于请求操作所要求的适当状态时抛出的异常。例如,请参见 Thread 类中的 suspendresume 方法。

33、IncompatibleClassChangeError

  • 类、错误
  • 自1.0开始有
  • 继承LinkageError
  • 在某些类定义中出现不兼容的类更改时抛出该异常。某些目前执行的方法所依赖的类定义已发生了变化。

34、IndexOutOfBoundsException

  • 异常类
  • 自1.0开始有
  • 继承RuntimeException
  • 指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。应用程序可以为这个类创建子类,以指示类似的异常。

35、InheritableThreadLocal<T>

  • 自1.2开始有
  • 继承ThreadLocal<T>
  • 该类扩展了 ThreadLocal,为子线程提供从父线程那里继承的值:在创建子线程时,子线程会接收所有可继承的线程局部变量的初始值,以获得父线程所具有的值。通常,子线程的值与父线程的值是一致的;但是,通过重写这个类中的 childValue 方法,子线程的值可以作为父线程值的一个任意函数。当必须将变量(如用户 ID 和 事务 ID)中维护的每线程属性(per-thread-attribute)自动传送给创建的所有子线程时,应尽可能地采用可继承的线程局部变量,而不是采用普通的线程局部变量。

36、InstantiationError

  • 类、错误
  • 自1.0开始有
  • 继承RuntimeException
  • 当应用程序试图使用 Java 的 new 结构来实例化一个抽象类或一个接口时,抛出该异常。通常由编译器捕获此错误;如果类定义中存在不兼容的更改,则此错误将只可能发生在运行时。

37、InstantiationError

  • 类、错误
  • 自1.0开始有
  • 继承IncompatibleClassChangeError
  • 当应用程序试图使用 Java 的 new 结构来实例化一个抽象类或一个接口时,抛出该异常。通常由编译器捕获此错误;如果类定义中存在不兼容的更改,则此错误将只可能发生在运行时。

38、InstantiationException

  • 类、异常
  • 自1.0开始有
  • 继承Exception
  • 当应用程序试图使用 Class 类中的 newInstance 方法创建一个类的实例,而指定的类对象无法被实例化时,抛出该异常。实例化失败有很多原因,包括但不仅限于以下原因:类对象表示一个抽象类、接口、数组类、基本类型、void,类没有非 null 构造方法

39、Integer

  • final类
  • 自1.0开始有
  • 继承Number,实现Comparable<Integer>
  • Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。

39、InternalError

  • 类、错误
  • 自1.0开始有
  • 继承VirtualMachineError
  • 该异常指示 Java 虚拟机中出现一些意外的内部错误。

40、InterruptedException

  • 类、异常
  • 自1.0开始有
  • 继承Exception
  • 当线程在活动之前或活动期间处于正在等待、休眠或占用状态且该线程被中断时,抛出该异常。

41、Iterable<T>

  • 接口
  • 自1.5开始有
  • 无父类和接口
  • 实现这个接口允许对象成为 "foreach" 语句的目标。

42、LinkageError

  • 类、错误
  • 自1.0开始有
  • 继承Error
  • LinkageError 的子类指示一个类在一定程度上依赖于另一个类;但是,在编译前一个类之后,后一个类发生了不相容的改变。

43、Long

  • final类
  • 自1.0开始有
  • 继承Number,实现Comparable<Long>
  • Long 类在对象中包装了基本类型 long 的值。每个 Long 类型的对象都包含一个 long 类型的字段。此外,该类提供了多个方法,可以将 long 转换为 String,将 String 转换为 long,除此之外,还提供了其他一些处理 long 时有用的常量和方法。

44、Math

  • final类
  • 自1.0开始有
  • 无父类和接口
  • Math 类包含用于执行基本数学运算的方法和常量,如初等指数、对数、平方根和三角函数。

45、NegativeArraySizeException

  • 异常类
  • 自1.0开始有
  • 继承RuntimeException
  • 如果应用程序试图创建大小为负的数组,则抛出该异常。

46、NoClassDefFoundError

  • 类、错误
  • 自1.0开始有
  • 继承LinkageError
  • 当 Java 虚拟机或 ClassLoader 实例试图在类的定义中加载(作为通常方法调用的一部分或者作为使用 new 表达式创建的新实例的一部分),但无法找到该类的定义时,抛出此异常。当前执行的类被编译时,所搜索的类定义存在,但无法再找到该定义。

47、NoSuchFieldError

  • 类、错误
  • 自1.0开始有
  • 继承IncompatibleClassChangeError
  • 如果应用程序试图访问或修改一个指定的对象字段,而该对象不再包含该字段时,抛出该异常。通常由编译器捕获该错误;仅当类定义发生不相容的更改时,在运行时才会发生该错误。

48、NoSuchFieldException

  • 类、异常
  • 自1.0开始有
  • 继承ReflectiveOperationException
  • 类不包含指定名称的字段时产生的信号。

49、NoSuchMethodError

  • 类、错误
  • 自1.0开始有
  • 继承IncompatibleClassChangeError
  • 当应用程序试图调用类(静态或实例)的指定方法,而该类已不再具有该方法的定义时,抛出该异常。通常由编译器捕获该错误;仅当类定义发生不相容的更改时,在运行时才会发生该错误。

50、NoSuchMethodException

  • 类、异常
  • 自1.0开始有
  • 继承Exception
  • 无法找到某一特定方法时,抛出该异常。

51、NullPointerException

  • 类、异常
  • 自1.0开始有
  • 继承RuntimeException
  • 当应用程序试图在需要对象的地方使用 null 时,抛出该异常。

52、Number

  • 抽象类
  • 自1.0开始有
  • 实现java.io.Serializable
  • 抽象类 NumberBigDecimalBigIntegerByteDoubleFloatIntegerLongShort 类的超类。Number 的子类必须提供将表示的数值转换为 bytedoublefloatintlongshort 的方法。

53、NumberFormatException

  • 异常类
  • 自1.0开始有
  • 继承IllegalArgumentException
  • 当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。

54、Object

  • 自1.0开始有
  • 没有父类和接口
  • Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。

55、OutOfMemoryError

  • 类,错误
  • 自1.0开始有
  • 继承VirtualMachineError
  • 因为内存溢出或没有可用的内存提供给垃圾回收器时,Java 虚拟机无法分配一个对象,这时抛出该异常。

56、Package

  • 自1.0开始有
  • 实现java.lang.reflect.AnnotatedElement
  • Package 对象包含有关 Java 包的实现和规范的版本信息。

57、Process

  • 抽象类
  • 自1.0开始有
  • 无父类和接口
  • ProcessBuilder.start()Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,该实例可用来控制进程并获得相关信息。Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法。

58、ProcessBuilder

  • final类
  • 自1.0开始有
  • 无父类和接口
  • 此类用于创建操作系统进程。每个 ProcessBuilder 实例管理一个进程属性集。start() 方法利用这些属性创建一个新的 Process 实例。start() 方法可以从同一实例重复调用,以利用相同的或相关的属性创建新的子进程。

59、Readable

  • 接口
  • 自1.0开始有
  • 无父类和接口
  • Readable 是一个字符源。阅读方法的调用方能够通过 CharBuffer 使用 Readable 中的字符。

  • 有一个int read(CharBuffer cb)函数

60、Runnable

  • 接口
  • 自1.0开始有
  • 无父类和接口
  • Runnable 接口应该由那些打算通过某一线程执行其实例的类来实现。类必须定义一个称为 run 的无参数方法。设计该接口的目的是为希望在活动时执行代码的对象提供一个公共协议。例如,Thread 类实现了 Runnable。激活的意思是说某个线程已启动并且尚未停止。此外,Runnable 为非 Thread 子类的类提供了一种激活方式。通过实例化某个 Thread 实例并将自身作为运行目标,就可以运行实现 Runnable 的类而无需创建 Thread 的子类。大多数情况下,如果只想重写 run() 方法,而不重写其他 Thread 方法,那么应使用 Runnable 接口。这很重要,因为除非程序员打算修改或增强类的基本行为,否则不应为该类创建子类。

61、Runtime

  • 自1.0开始有
  • 无父类和接口
  • 每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。应用程序不能创建自己的 Runtime 类实例。

  • exec(),freeMemory(),gc()。

62、RuntimeException

  • 类,异常
  • 自1.0开始有
  • 继承Exception
  • RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。

63、RuntimePermission

  • final类
  • 自1.0开始有
  • 继承BasicPermission
  • 该类用于运行时权限。RuntimePermission 包含一个名称(也称为“目标名称”),但不包含操作列表;您可以有或没有指定的权限。

64、SecurityException

  • 类,异常
  • 自1.0开始有
  • 继承RuntimeException
  • 由安全管理器抛出的异常,指示存在安全侵犯。

65、SecurityManager

  • 自1.0开始有
  • 无父类和接口
  • 安全管理器是一个允许应用程序实现安全策略的类。它允许应用程序在执行一个可能不安全或敏感的操作前确定该操作是什么,以及是否是在允许执行该操作的安全上下文中执行它。应用程序可以允许或不允许该操作。

66、Short

  • final类
  • 自1.0开始有
  • 继承Number,实现Comparable<Short>
  • Short 类在对象中包装基本类型 short 的值。一个 Short 类型的对象只包含一个 short 类型的字段。另外,该类提供了多个方法,可以将 short 转换为 String,将 String 转换为 short,同时还提供了其他一些处理 short 时有用的常量和方法。

67、*Error

  • 类,错误
  • 自1.0开始有
  • 继承VirtualMachineError
  • 当应用程序递归太深而发生堆栈溢出时,抛出该错误。

68、StackTraceElement

  • final类
  • 自1.0开始有
  • 实现 java.io.Serializable
  • 堆栈跟踪中的元素,它由 Throwable.getStackTrace() 返回。每个元素表示单独的一个堆栈帧。所有的堆栈帧(堆栈顶部的那个堆栈帧除外)都表示一个方法调用。堆栈顶部的帧表示生成堆栈跟踪的执行点。通常,这是创建对应于堆栈跟踪的 throwable 的点。

69、StrictMath

  • final类
  • 自1.3开始有
  • 无父类和接口
  • trictMath 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。为了确保 Java 程序的可移植性,此包中的某些数学函数的定义需要与某些已发布的算法生成相同的结果。这些算法可以从众所周知的网络库 netlibfdlibm(“Freely Distributable Math Library,免费发布的数学库”)包的形式获得。这些算法都是用 C 编程语言编写的,在使用所有遵循 Java 浮点算法规则的浮点运算执行时也能够被理解。Java 数学库是根据 fdlibm 5.3 版定义的。其中 fdlibm 使用“IEEE 754 核心函数”版本(位于名字以字母 e 开头的文件中)为一个函数提供了多个定义(如 acos)。需要 fdlibm 语义的方法有 sincostanasinacosatanexploglog10cbrtatan2powsinhcoshtanhhypotexpm1log1p

70、String

  • final类
  • 自1.0开始有
  • 实现 java.io.Serializable, Comparable<String>, CharSequence
  • String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。

71、StringBuffer

  • final类
  • 自1.0开始有
  • 实现 java.io.Serializable,, CharSequence
  • 线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。StringBuffer 上的主要操作是 appendinsert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。例如,如果 z 引用一个当前内容为 "start" 的字符串缓冲区对象,则此方法调用 z.append("le") 会使字符串缓冲区包含 "startle",而 z.insert(4, "le") 将更改字符串缓冲区,使之包含 "starlet"。通常,如果 sb 引用 StringBuilder 的一个实例,则 sb.append(x)sb.insert(sb.length(), x) 具有相同的效果。当发生与源序列有关的操作(如源序列中的追加或插入操作)时,该类只在执行此操作的字符串缓冲区上而不是在源上实现同步。每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从 JDK 5 开始,为该类补充了一个单个线程使用的等价类,即 StringBuilder。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。

72、StringBuilder

  • final类
  • 自1.5开始有
  • 实现 java.io.Serializable, CharSequence
  • 一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。在 StringBuilder 上的主要操作是 appendinsert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串生成器中。append 方法始终将这些字符添加到生成器的末端;而 insert 方法则在指定的点添加字符。例如,如果 z 引用一个当前内容为 "start" 的字符串的生成器对象,则该方法调用 z.append("le") 将使字符串生成器包含 "startle",而 z.insert(4, "le") 将更改字符串生成器,使之包含 "starlet"。通常,如果 sb 引用 StringBuilder 的实例,则 sb.append(x)sb.insert(sb.length(), x) 具有相同的效果。每个字符串生成器都有一定的容量。只要字符串生成器所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区。如果内部缓冲区溢出,则此容量自动增大。将 StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer

73、StringIndexOutOfBoundsException

  • 类、异常
  • 自1.0开始有
  • 继承IndexOutOfBoundsException
  • 此异常由 String 方法抛出,指示索引或者为负,或者超出字符串的大小。对诸如 charAt 的一些方法,当索引等于字符串的大小时,也会抛出该异常。

74、System

  • final类
  • 自1.0开始有
  • 无父类和接口
  • System 类包含一些有用的类字段和方法。它不能被实例化。在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。

75、Thread

  • 自1.0开始有
  • 实现Runnable
  • 线程 是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。每个线程都可以或不可以标记为一个守护程序。当某个线程中运行的代码创建一个新 Thread 对象时,该新线程的初始优先级被设定为创建线程的优先级,并且当且仅当创建线程是守护线程时,新线程才是守护程序。

76、ThreadDeath

  • 类,错误
  • 自1.0开始有
  • 继承Error
  • 调用 Thread 类中带有零参数的 stop 方法时,受害线程将抛出一个 ThreadDeath 实例。仅当应用程序在被异步终止后必须清除时才应该捕获这个类的实例。如果 ThreadDeath 被一个方法捕获,那么将它重新抛出非常重要,因为这样才能让该线程真正终止。如果没有捕获 ThreadDeath,则*错误处理程序不会输出消息。虽然 ThreadDeath 类是“正常出现”的,但它只能是 Error 的子类而不是 Exception 的子类,因为许多应用程序捕获所有出现的 Exception,然后又将其放弃。

77、ThreadGroup

  • 自1.0开始有
  • 实现Thread.UncaughtExceptionHandler
  • 线程组表示一个线程的集合。此外,线程组也可以包含其他线程组。线程组构成一棵树,在树中,除了初始线程组外,每个线程组都有一个父线程组。允许线程访问有关自己的线程组的信息,但是不允许它访问有关其线程组的父线程组或其他任何线程组的信息。

78、ThreadLocal<T>

  • 自1.2开始有
  • 无父类和接口
  • 该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 getset 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联。

79、Throwable

  • 自1.0开始有
  • 实现Serializable
  • Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。类似地,只有此类或其子类之一才可以是 catch 子句中的参数类型。两个子类的实例,ErrorException,通常用于指示发生了异常情况。通常,这些实例是在异常情况的上下文中新近创建的,因此包含了相关的信息(比如堆栈跟踪数据)。Throwable 包含了其线程创建时线程执行堆栈的快照。它还包含了给出有关错误更多信息的消息字符串。最后,它还可以包含 cause(原因):另一个导致此 throwable 抛出的 throwable。此 cause 设施在 1.4 版本中首次出现。它也称为异常链 设施,因为 cause 自身也会有 cause,依此类推,就形成了异常链,每个异常都是由另一个异常引起的。导致 throwable cause 的一个理由是,抛出它的类构建在低层抽象之中,而高层操作由于低层操作的失败而失败。让低层抛出的 throwable 向外传播是一种糟糕的设计方法,因为它通常与高层提供的抽象不相关。此外,这样做将高层 API 与其实现细节关联起来,假定低层异常是经过检查的异常。抛出“经过包装的异常”(即包含 cause 的异常)允许高层与其调用方交流失败详细信息,而不会招致上述任何一个缺点。这种方式保留了改变高层实现而不改变其 API 的灵活性(尤其是,异常集合通过其方法抛出)。

80、UnknownError

  • 类,错误
  • 自1.0开始有
  • 继承VirtualMachineError
  • 当 Java 虚拟机中出现一个未知但严重的异常时,抛出该错误。

81、UnsatisfiedLinkError

  • 类,错误
  • 自1.0开始有
  • 继承LinkageError
  • 当 Java 虚拟机无法找到声明为 native 的方法的适当本地语言定义时,抛出该错误。

82、UnsupportedClassVersionError

  • 类,错误
  • 自1.0开始有
  • 继承LinkageError
  • 当 Java 虚拟机试图读取一个类文件,并确定文件的主辅版本号不受支持时,抛出该错误。

83、UnsupportedOperationException

  • 类,异常
  • 自1.0开始有
  • 继承RuntimeException
  • 当不支持请求的操作时,抛出该异常。此类是 Java Collections Framework 的成员。

84、VerifyError

  • 类,错误
  • 自1.0开始有
  • 继承LinkageError
  • 当“校验器”检测到一个类文件虽然格式正确,但包含着一些内部不一致性或安全性问题时,抛出该错误。

85、VirtualMachineError

  • 类,错误
  • 自1.0开始有
  • 继承Error
  • 当 Java 虚拟机崩溃或用尽了它继续操作所需的资源时,抛出该错误。

86、Void

  • 自1.1开始有
  • 没有父类和接口
  • Void 类是一个不可实例化的占位符类,它持有对表示 Java 关键字 void 的 Class 对象的引用。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

以下是补充的一些java.lang包中的类:

87、Thread.UncaughtExceptionHandler

  • 接口
  • 自1.5开始有
  • 没有父类和接口
  • Thread 因未捕获的异常而突然终止时,调用处理程序的接口。当某一线程因未捕获的异常而即将终止时,Java 虚拟机将使用 Thread.getUncaughtExceptionHandler() 查询该线程以获得其 UncaughtExceptionHandler 的线程,并调用处理程序的 uncaughtException 方法,将线程和异常作为参数传递。如果某一线程没有明确设置其 UncaughtExceptionHandler,则将它的 ThreadGroup 对象作为其 UncaughtExceptionHandler。如果 ThreadGroup 对象对处理异常没有什么特殊要求,那么它可以将调用转发给默认的未捕获异常处理程序。

  • 有一个方法void uncaughtException(Thread t, Throwable e)

88、Thread.State

  • 枚举
  • 自1.5开始有
  • 线程状态。线程可以处于下列状态之一:

    • NEW
      至今尚未启动的线程处于这种状态。
    • RUNNABLE
      正在 Java 虚拟机中执行的线程处于这种状态。
    • BLOCKED
      受阻塞并等待某个监视器锁的线程处于这种状态。
    • WAITING
      无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。
    • TIMED_WAITING
      等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态。
    • TERMINATED
      已退出的线程处于这种状态。

    在给定时间点上,一个线程只能处于一种状态。这些状态是虚拟机状态,它们并没有反映所有操作系统线程状态。

89、Deprecated

  • 注解@interface
  • 自1.5开始有
  • 用 @Deprecated 注释的程序元素,不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。在使用不被赞成的程序元素或在不被赞成的代码中执行重写时,编译器会发出警告。

90、Override

  • 注解@interface
  • 自1.5开始有
  • 表示一个方法声明打算重写超类中的另一个方法声明。如果方法利用此注释类型进行注解但没有重写超类方法,则编译器会生成一条错误消息。

91、SuppressWarnings

  • 注解@interface
  • 自1.5开始有
  • 指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。注意,在给定元素中取消显示的警告集是所有包含元素中取消显示的警告的超集。例如,如果注释一个类来取消显示某个警告,同时注释一个方法来取消显示另一个警告,那么将在此方法中同时取消显示这两个警告。根据风格不同,程序员应该始终在最里层的嵌套元素上使用此注释,在那里使用才有效。如果要在特定的方法中取消显示某个警告,则应该注释该方法而不是注释它的类。