JDK_API剖析之java.lang包
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
的字段。此外,此类还为boolean
和String
的相互转换提供了许多方法,并提供了处理boolean
时非常有用的其他一些常量和方法。
8、Byte
- final类
- 自1.1开始有
- 继承自Number,实现Comparable<Byte>
Byte
类将基本类型byte
的值包装在一个对象中。一个Byte
类型的对象只包含一个类型为byte
的字段。此外,该类还为byte
和String
的相互转换提供了几种方法,并提供了处理byte
时非常有用的其他一些常量和方法。- 常量有byte可取最大值,最小值。
9、Character
- final类
- 自1.0开始有
- 实现java.io.Serializable, Comparable<Character>
Character
类在对象中包装一个基本类型char
的值。Character
类型的对象包含类型为char
的单个字段。此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然。
10、CharSequence
- 接口
- 自1.4开始有
- 没有父类和接口
CharSequence 是
char
值的一个可读序列。此接口对许多不同种类的char
序列提供统一的只读访问。- 提供了几个字符串常用函数的抽象
11、Class<T>
- final类
- 自1.0开始有
- 实现了java.io.Serializable, GenericDeclaration,Type,AnnotatedElement
Class
类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注解是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该Class
对象。基本的 Java 类型(boolean
、byte
、char
、short
、int
、long
、float
和double
)和关键字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
Error
是Throwable
的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然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
类中的suspend
和resume
方法。
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
抽象类
Number
是BigDecimal
、BigInteger
、Byte
、Double
、Float
、Integer
、Long
和Short
类的超类。Number
的子类必须提供将表示的数值转换为byte
、double
、float
、int
、long
和short
的方法。
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、StackOverflowError
- 类,错误
- 自1.0开始有
- 继承VirtualMachineError
当应用程序递归太深而发生堆栈溢出时,抛出该错误。
68、StackTraceElement
- final类
- 自1.0开始有
- 实现 java.io.Serializable
堆栈跟踪中的元素,它由
Throwable.getStackTrace()
返回。每个元素表示单独的一个堆栈帧。所有的堆栈帧(堆栈顶部的那个堆栈帧除外)都表示一个方法调用。堆栈顶部的帧表示生成堆栈跟踪的执行点。通常,这是创建对应于堆栈跟踪的 throwable 的点。
69、StrictMath
- final类
- 自1.3开始有
- 无父类和接口
trictMath
类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。为了确保 Java 程序的可移植性,此包中的某些数学函数的定义需要与某些已发布的算法生成相同的结果。这些算法可以从众所周知的网络库netlib
以fdlibm
(“Freely Distributable Math Library,免费发布的数学库”)包的形式获得。这些算法都是用 C 编程语言编写的,在使用所有遵循 Java 浮点算法规则的浮点运算执行时也能够被理解。Java 数学库是根据fdlibm
5.3 版定义的。其中fdlibm
使用“IEEE 754 核心函数”版本(位于名字以字母e
开头的文件中)为一个函数提供了多个定义(如acos
)。需要fdlibm
语义的方法有sin
、cos
、tan
、asin
、acos
、atan
、exp
、log
、log10
、cbrt
、atan2
、pow
、sinh
、cosh
、tanh
、hypot
、expm1
和log1p
。
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
上的主要操作是append
和insert
方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。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
上的主要操作是append
和insert
方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串生成器中。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) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联。
79、Throwable
- 类
- 自1.0开始有
- 实现Serializable
Throwable
类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Javathrow
语句抛出。类似地,只有此类或其子类之一才可以是catch
子句中的参数类型。两个子类的实例,Error
和Exception
,通常用于指示发生了异常情况。通常,这些实例是在异常情况的上下文中新近创建的,因此包含了相关的信息(比如堆栈跟踪数据)。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开始有
指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。注意,在给定元素中取消显示的警告集是所有包含元素中取消显示的警告的超集。例如,如果注释一个类来取消显示某个警告,同时注释一个方法来取消显示另一个警告,那么将在此方法中同时取消显示这两个警告。根据风格不同,程序员应该始终在最里层的嵌套元素上使用此注释,在那里使用才有效。如果要在特定的方法中取消显示某个警告,则应该注释该方法而不是注释它的类。
JDK_API剖析之java.lang包的更多相关文章
- JDK_API剖析之java.io包
Java的核心库java.io提供了全面的IO接口.包括:文件读写.标准设备输出等.Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入. 一.接口 1.Closea ...
- JDK_API剖析之java.util包
Java的实用工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构. 一.接口 1.Collection<E> 接口 自1.2开始有 继承Iterable< ...
- JDK_API剖析之java.net包
为实现网络应用程序提供类.(按照字母顺序排序) 1.Authenticator 抽象类 自1.2开始有 无父类和接口 Authenticator 类表示懂得如何获得网络连接验证的对象.通常,它通过提示 ...
- java.lang包
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.特性——不用import 2.String String x = "abc"; < ...
- java.lang包【Object类】
基本描述: (1)Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入: (2)Object类是所有Java类的祖先.每个类都使用 Obje ...
- Java.lang 包 (包装类、String类、Math类、Class类、Object类)
Java 的核心 API(Application Programming Interface)是非常庞大的,这给开发者带来了很大的方便. java.lang 包是 Java 的核心类库,它包含了运行 ...
- Java.lang包的接口解读
Java.lang包中提供了八个接口: 1.Appendable 能够被追加 char 序列和值的对象.如果某个类的实例打算接收来自 Formatter的格式化输出,那么该类必须实现 Appendab ...
- JDK框架简析--java.lang包中的基础类库、基础数据类型
题记 JDK.Java Development Kit. 我们必须先认识到,JDK不过,不过一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含 ...
- 简单看看jdk7源码之java.lang包01
从今天开始简单开始读一遍jdk的源码,估计这个时间会很长,慢慢啃吧....(首先说一句抱歉,因为很多图都是直接百度扣的,图太多了不能为每一个图附上原版链接,不好意思!) 在网上看了很多的教程,读源码有 ...
随机推荐
- python 操作mongodb 文件相关
https://api.mongodb.com/python/current/tutorial.html# 文档地址 from pymongo import MongoClientfrom gridf ...
- python-day10(正式学习)
目录 字符编码 计算机基础 文本编辑器存取文件的原理 python解释器执行py文件的原理 python解释器与文本编辑的异同 字符编码介绍 字符编码的分类 乱码分析 总结 文件操作 三种基本操作 文 ...
- Python_3day
循环 循环是一种控制语句块重复执行的结构 while 适用于广度遍历 for 开发中经常使用 while 循环 当一个条件保持真的时候while循环重复执行语句 while 循环一定要有结束条件, ...
- Restful Api调用工具类
RestfulHttpClient.java package pres.lnk.utils; import com.fasterxml.jackson.databind.ObjectMapper; i ...
- model attribute
model attribute,字面意思,给model加attribute以配置数据库 主键 public class OrderDetail { [Key] public int OrderDeta ...
- Entity Framework Core Relationship的学习笔记
说明 此例筛选了感兴趣及常用部分 参考文献 https://docs.microsoft.com/en-us/ef/core/modeling/relationships One to Many Ma ...
- @RequestMapping-@PathVariable小误区
去掉勾选就可以演示出错误了,一般勾选是为了方便我们Debug调试 会出现500错误: 正确的写法:
- DES加密解密 MD5加密解密
#region MD5 加密 /// <summary> /// MD5加密静态方法 /// </summary> /// <param name="Encry ...
- new angular 项目的工作区配置文件和应用源文件
1.工作区配置文件 每个工作空间中的所有项目共享同一个 CLI 配置环境 .该工作空间的顶层包含着全工作空间级的配置文件.根应用的配置文件以及一些包含根应用的源文件和测试文件的子文件夹. 工作空间配置 ...
- Ubuntu - 14.04下,GO语言的安装!
一,下载GO语言的安装文件,我直接下载GO语言的安装包(64位),并不是源码: 下载地址: 64位:https://storage.googleapis.com/golang/go1.6.linux- ...