一.Cloneable接口(浅复制)
此类实现了 Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。此接口只是一个标记,无实际方法。
如果在没有实现 Cloneable 接口的实例上调用 Object 的 clone 方法,则会导致抛出 CloneNotSupportedException 异常。
按照惯例,实现此接口的类应该使用公共方法重写 Object.clone(它是受保护的)。请参阅 Object.clone()(一个本地方法),以获得有关重写此方法的详细信息。
注意,此接口不 包含 clone 方法。因此,因为某个对象实现了此接口就克隆它是不可能的。即使 clone 方法是反射性调用的,也无法保证它将获得成功。
(一个可被clone的类,需要实现Cloneable接口同时还要重写Object.clone()方法)
二.Iterable接口
实现此接口的类,可以被foreach语句支持。(foreach底层也是被iterable支持)。
此接口只有一个方法:Iterator<T> iterator(),获取一个支持线性遍历的iterator实例。
三.Thread.UncaughtExceptionHandler(接口)
当 Thread 因未捕获的异常而突然终止时,调用处理程序的接口.
void uncaughtException(Thread t,Throwable e):当给定线程因给定的未捕获异常而终止时,调用该方法。
可以通过Thread.setUncaughtExceptionHandler(Handler)来设定“未捕获异常”的处理器。此时线程已经退出执行。
四.Byte类:
byte的对象类,提供了针对多种进制的string转换成byte的操作。
- byte parseByte(String,int radix):将string按照指定的基数(进制)进行转换。
- Byte valueOf(String,int radix):同上,底层基于parseByte
- Byte decode(String):将合法的10、16、8等多种进制的string,转换成Byte对象,内部根据字符串匹配获取器基数特征,比如16进制以0x或者#开头,然后使用valueOf操作。
- String toString():以基数为10的形式,返回字符串。如果需要其他基数的字符串转换,参见Integer.toString(int,int radix).
上述方法,最终依赖于Integer.parseInt(String,int radix)---->最终依赖Character.digit(char,radix).
五.Character类
Character 类在对象中包装一个基本类型 char 的值。Character 类型的对象包含类型为 char 的单个字段。字符信息基于 Unicode 标准。
char值也是可以和int值互相转换(最大值为1<<16),byte可以和short转换一样。
Character类中提供了大量辅助方法,请参考API。(大小写校验,空白校验,unicode值获取与转换)
六.Class类
Class类,是一种特殊的类,它实现了Serializable、Type等接口,Type接口是个标记接口以标记此类为一种“类型”(Type接口在reflect包中),
Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,
所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。
Class 没有公共构造方法(构造器为private,只能有JVM来创造Class实例)。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass(ClassLoader.defineClass()) 方法自动构造的。Object.getClass()方法是本地方法,所有的统一类型的实例共享其Class实例。
- static Class<?> forName(String className) throws ClassNotFoundException
- static Class<?> forName(String className,boolean inited,ClassLoader loader) throws ClassNotFoundException
返回指定字符串类名或者接口相关的Class实例,等价于Class.forName(className,true,currentClassLoader),其中currentClassLoader为当前类的定义类加载器.
注意Class.forName将会导致类被初始化(加载,static区块被执行,static属性被初始化;注意static区块或者属性是按照其声明的顺序被实例化的).
public class TClass { static { System.out.println("Tclass static"); System.out.println("i:" + i);// 编译错误,i需要在此前 被声明,因为static信息是按照声明顺序被 编译和实例化 } static Integer i = new Integer(2);// }
Class.forName(String className)与ClassLoader.loadClass(String className)都能获取Class实例,其区别:
1) Class.forName(String className) == Class.forName(String className,true,currentClassLoader),其中第二个参数为"是否初始化class",所以forName(String className)
会初始化Class的static区块以及static属性.
2) classLoader.loadClass(String)(备注:此方法并非静态方法) == Class.forName(String className,false,classLoader),如果排除classLoader实例的不同,这两个方法的执行方式是一样的.
3) 通过字面值的方式获取Class实例,比如Class t = Timer.class,它和2)一样(即不初始化Class).
如果类信息在没有初始化,那么Class.newInstance()/new对象等都会触发实例化,且实例化只会触发一次.
- public T newInstance():创建Class的一个对象实例,和执行空参数列表的构造函数一样.内部实现基于Constructor.newInstance(null).
1) 如果该类或其 默认构造方法是不可访问,抛出IllegalAccessException.
2) 如果此 Class 表示一个抽象类、接口、数组类、基本类型或 void; 或者该类没有默认构造方法(只有含参构造器);
或者由于其他某种原因导致实例化失败;抛出InstantiationException.
3) 如果package不可访问(protected)或者具有安全管理器,抛出securityException.
- public boolean isInsance(Object obj):具有和instanceOf运算符等效,用于判断某个对象是否是某种Class类型.
- public boolean isAssignableFrom(Class clazz): 检测当前Class实例是否为clazz的超类或者接口或者和clazz为同一类型:Serializable.class.isAssignableFrom(String.class) 将返回true.
- public boolean isInterface()/isArray()/isPrimitive():isPrimitive()检测class实例是否为一个基本类型,有九种预定义的 Class 对象,表示八个基本类型和 void。这些类对象由 Java 虚拟机创建,与其表示的基本类型同名,即 boolean、byte、char、short、int、long、float 和 double。
- public boolean isAnnotation():当前Class实例是否为"注释",注意:如果是"注释"类型,它的isInterface()必将返回true.
- public ClassLoader getClassLoader():获取当前Class实例的类加载器,有些实现可能使用null来表示引导类的加载器(bootstrap classLoader.).
如果此对象表示一个基本类型或者void或者是Object,则返回null.例如:Object.getClassLoader() == null将返回true.
java的API中的类,使用getClassLoader()将得到null(例如Stirng,Integer,Date,Timer等,这些JDK API均有引导类加载.)
- public int getModifiers():获取当前Class的修饰词位标识符,需要通过Modifier类来辅助获取.
比如:Modifier.isPrivate(int value)可以计算出此类的modifiers值是否为private.
- public Method[] getMethods()
- public Field[] getFields()
- public Constructor<?>[] getConstrunctor()
通过反射机制获取当前class的所有成员信息.包括来自继承类的信息.
getDeclaredFields/getDeclaredMethods/getDeclaredConstructors获取当前class直接声明的成员信息,不包括继承类的信息.
- public T cast(Object obj):将一个对象强制转换成Class对象所表示的类或者接口.如果转换失败则抛出ClassCastException.
- public Class asSubcalss(Class clazz):强制将当前class对象转换成指定的clazz的子类,如果强制转换有效,则返回子类型的引用,否则抛出"ClassCastException".
- public boolean isAnnotationPresent(Annotation anno):检测annotation是否存在于当前class上.
同时Class还提供了获取类上的annotation列表的方法等.
相关推荐
这份"JAVA全套API手册整理.zip"包含的应该是一份详尽的Java API文档,帮助开发者理解和使用Java平台的各种功能。 Java API涵盖了许多关键领域,包括: 1. **基础类库**:如Object、String、ArrayList、HashMap等,...
根据提供的文件信息,我们可以整理出以下关于Java考试的要点及相关知识点: ### Java考试要点概览 #### 一、Java的历史与发展 - **起源**: Java语言最初由Sun Microsystems公司于1991年开始开发,最初命名为“Oak...
### Robotium 2.5 API 整理及详解 #### 一、概述 Robotium是一款用于Android自动化测试的开源框架,它可以模拟用户操作来进行UI测试。Robotium支持各种类型的测试,包括功能测试、系统测试以及接受性测试等。在...
这份“Java基础知识学习--自己整理.zip”压缩包显然是一个精心整理的Java初学者教程,包含了作者的学习笔记和心得,旨在帮助新手快速入门。下面将详细阐述Java的基础知识。 **一、Java简介** Java是由Sun ...
### Java 常用API的运用、效率及技巧 #### 1. Java 面向对象基本概念 Java 是一种完全面向对象的语言,除了几种基本数据类型(如 int、double 等)之外,所有事物都被视为对象。面向对象编程(OOP)的基本原则包括...
这份资料的核心是“JAVA面试题集编程篇.pdf”,它整理了Java编程领域的常见问题和解答,为面试者提供了一个全面的复习平台。 一、基础概念与语法 1. Java的特性:理解Java的面向对象特性,包括封装、继承、多态。 2...
本资料包"Java常用的插件API整理以及基于JDK的一些方法封装库.zip"主要包含了对Java插件API的详细整理和基于JDK的方法封装库,让我们一起来深入探讨。 首先,插件API(Plugin API)是软件系统中一种允许第三方...
1. **集合框架**:Java集合框架是Java工具类的一个重要组成部分,包括List、Set、Map等各种接口和实现类,如ArrayList、LinkedList、HashSet、HashMap等。这些类提供了丰富的操作方法,如添加元素、删除元素、查找...
1. Java语言的注释: - 单行注释以`//`开始,用于简短的注释。 - 多行注释以`/*`开始,以`*/`结束,可以跨越多行,常用于文档注释或大段代码的解释。 2. Java虚拟机(JVM)的执行特点: - 多线程:Java支持并发...
它是由Oracle公司(或以前的Sun Microsystems)编译并打包的,包含了Java API的所有实现,对于Java开发者来说,理解rt.jar的源码能深入学习Java语言的内部机制,提高编程技能和解决问题的能力。 这篇博客文章《Java...
System 类位于 java.lang 包中,是 Java 中最重要的类之一。 3. String, StringBuffer String 和 StringBuffer 是 Java 中两个重要的类,String 用于表示字符串,StringBuffer 用于表示可变字符串。StringBuffer ...
- **JTA (Java Transaction API)**: 用于管理事务处理,提供了与平台无关的事务处理机制。 #### 7. forward 与 redirect 的区别 - **forward**: - 在服务器端进行的页面重定向,不改变浏览器地址栏中的 URL。 - ...
- **分类**:标准库(如 `java.lang`、`java.util` 等)、第三方库等。 - **用途**:提供丰富的功能,简化开发工作。 ### 五、输入输出 (IO) - **定义**:用于处理文件读写等操作。 - **分类**:字节流(如 `...
### Java的考试复习资料整理 #### 一、Java的基本概念及语法 - **Java平台的三个版本**: - **Java ME** (Micro Edition):主要用于嵌入式系统和移动设备。 - **Java SE** (Standard Edition):标准版,适用于...
这份"Java程序员常用英语单词800+"的资料,是根据Java API中五个核心包(lang, util, io, net, sql)的高频词汇整理得出的,涉及文档超过1700个。这些单词在计算机软件开发环境中具有特定含义,不仅包含通用词汇,还...
根据提供的文件信息,我们可以整理出以下关键的Java知识点: ### 1. Java 类与接口的实现 - **`java.lang.Thread`**: 在Java中,如果一个类想要创建线程,可以通过继承`java.lang.Thread`类或者实现`Runnable`接口...
这份"Java十大基础笔记整理(PDF)"提供了全面的Java基础知识概览,适合初学者进行学习和复习。下面,我们将深入探讨Java的基础知识,涵盖核心概念、语法和编程实践。 1. **Java简介**:Java是由Sun Microsystems...
* compact1:包含java.io、java.lang、java.util等API。 * compact2:包含java.io、java.lang、java.util、java.text等API。 * compact3:包含所有的API。 使用javac命令可以根据profile编译应用程序,例如: $ ...
以上只是Java核心知识的冰山一角,实际的"JAVA核心知识点整理.pdf"可能会包含更多细节,如枚举、并发工具类、Lambda表达式、Stream API、模块系统(Jigsaw)、NIO.2、JPA、Spring框架等内容。深入学习并掌握这些知识...
1. **JavaDoc注解**:JavaDoc是一种生成API文档的工具,常用的标记如`@author`用于指定程序作者,`@version`表示源文件的版本,`@deprecated`标记不再推荐使用的方法,`@param`描述方法参数,`@return`说明方法...