欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

读《Java2核心技术》第五章

程序员文章站 2024-03-01 18:32:52
...

《Java2核心技术》第五章

一、继承5.1

1、this和super
(1)关键字this
引用隐式参数;调用该类其他的构造器
(2)关键字super
调用超类的方法;调用超类的构造器

2、final方法
(1)阻止继承
(2)不允许拓展的类

3、hasCode方法
(1)无规律
(2)由对象导出的一个整型值
(3)如果x和y是两个不同的对象,x.hashCode()和y.hashCode()基本不会相同
(4)hashCode是Object类中方法,每个对象都有一个默认的散列码,其值为对象的存储地址
(5)字符串的散列码是由内容导出的
(6)散列码可以是任意整数,包括正数和负数,两个相等的对象要求返回相等的散列码

4、toString方法
(1)Object方法,返回表示对象值的字符串
(2)当对象与一个字符串通过操作符+连接起来,Java编译就会自动地调用toString方法,以便获得这个对象的字符串描述
(3)x.toString()的地方可以用: “ “+x替代,将一个空串和x的字符串表示相连接
(4)如果x是任意一个对象,并且调用System.out.println(x),println方法将直接调用x,toString(),并打印输出得到的字符串
(5)打印输出对象所属的类名和散列码

5、Object常用方法
(1)Class getClass():返回包含对象信息的类信息,Java提供了类运行时的描述,内容被封装在Class类中
(2)boolean equals(Object otherObject):比较两个对象是否相等,如果两个对象指向同一块存储区域,方法返回true,否则方法返回false
(3)String toString():返回描述该对象值的字符串
(4)Object clone():创建一个对象的副本,Java运行时系统将为新实例分配存储空间,并将当前的对象复制到这块存储区域中

6、java.lang.Class
(1)String getName():返回该类的名字
(2)Class getSuperclass():以Class对象的形式返回该类的超类信息

二、继承5.2

1、数组列表
(1)ArrayList数组列表管理着对象引用的一个内部数组
(2)如果内部数组已经满了,数组列表就会自动地创建一个更大的数组,并且将所有的对象从较小的数组中拷贝到较大的数组中
(3)容量为100元素的数组列表只是拥有保存100个元素的潜力(实际上,重新分配空间的话,将会超过100),但是在最初,甚至完成初始化构造之后,数组列表根本就不含有任何元素
(4)java.util.ArrayList

ArrayList<T>():构造一个空数组列表
ArrayList<T>(int initialCapacity):用指定容量构造一个空数组列表
boolean add(T obj):在数组列表的尾端添加一个元素,永远返回true
int size():返回存储在数组列表中的当前元素数量,该值小于或等于数组列表的容量
void ensureCapacity(int capacity):确保数组列表在不重新分配内部存储空间的情况下能够保存给定数量的元素
void trimToSize():将数组列表的存储容量削减为当前尺寸

2、对象包装器和自动打包
(1)将基本类型转换成对象
(2)包装类wrapper
(3)对象包装器类是不可变的,一旦构造了包装类,就不允许更改包装在其中的值
(4)对象包装器类是final的,不能定义子类

3、java.lang.Integer
(1)int intValue():以Int的形式返回Integer对象的值
(2)static Strign toString(int i):以一个新String对象的形式返回给定数值i的十进制表示
(3)static String toString(int i,int radix):返回数值i的基于给定radix参数进制的表示
(4)static int parseInt(String s):返回字符串s表示的整型数值
(5)static Integer valueOf(String s):返回整型数值进行初始化后的一个新Integer对象

三、继承5.3

1、反射库
(1)reflection library提供了工具集,能够动态操纵Java代码的程序
(2)大量应用在JavaBeans中,是Java组件的体系结构
(3)反射机制

在运行时分析类的能力
在运行时查看对象
实现数组的操作代码
利用Method对象

2、Class
(1)静态方法forName获得字符串对应的Class对象
(2)类名保存在字符串中,并且可在运行中改变,可以使用forName
(3)forName方法只在className是类名或接口名时才能执行,forName方法抛出checked exception已检查异常,对应异常处理器exception handler
(4)虚拟机为每个类型管理一个Class对象
(5)newInstance()方法可以快速创建一个类的实例,e.getClass().newInstance()创建了一个与e具有相同类型的实例
(6)newInstance()方法调用默认的构造器,初始化新创建的对象,Constructor类中的newInstance方法,在java.lang.reflect包中的一个类
(7)forName和newInstance:可以根据存储在字符串中的类型创建一个对象

String s="java.util.Date";
Object m=Class.forName(5).newInstance();

3、相关方法
(1)java.lang.Class

static Class forName(String className):返回类名为className的Class对象
Object newInstance():返回该类的一个新实例

(2)java.lang.reflect.Constructor

Object newInstance(Object[] args):构造一个该构造器所代表的类的新实例

(3)java.lang.Throwable

void printStackTrace():将Throwable对象和栈的轨迹输出到标准错误流

(4)Class类中的getFields、getMethods和getConstructors方法分别返回类支持的public域、方法和构造器数组,其中包括超类的公有成员
(5)Class类的getDeclareFields、getDeclareMethods和getDeclaredConstructors方法将返回类中声明的全部域、方法和构造器组成的数组,包括私有和受保护成员,但不包括超类的成员
(6)方法

读《Java2核心技术》第五章
读《Java2核心技术》第五章
(7)Method类

invoke方法:允许调用包装在当前Method对象中的办法
getDeclareMethod()方法:返回Method对象
Class中的getMethod方法:返回Method对象

(8)java.lang.reflect.Method

public Object invoke(Object implicParameter , Object[] explicParameters)
调用该对象所描述的方法,传递给定参数,并返回方法的返回值。
对于静态方法,把null作为隐式参数传递,在使用包装器传递基本类型的值时,基本类型的返回值必须是未包装的

四、继承5.4

1、枚举类enum
(1)例如:public enum Size(SMALL,MEDIUM,LARGE,EXTRA_LARGE)
(2)比较两个枚举类型的值时,不要调用equals,而是直接使用”==“比较
(3)可以在枚举类型中添加一些构造器、方法和域
(4)所有的枚举类型都是Enum类的子类
(5)toString的逆方法是静态方法valueOf
(6)java.lang.Enum

static Enum valueOf(Class enumClass,String name):返回给定名字、给定类的枚举常量
String toString():返回枚举常量名

2、反射
(1)反射机制使得可以通过在运行时查看域和方法
(2)反射即编译器很难帮助程序员发现程序中的错误,任何错误只能在运行时才被发现,并导致异常