java知识点回顾(三)

1.Object类

1). 浅克隆与深克隆

        浅克隆==>复制引用;深克隆==>复制堆内存(对象);


2). clone()方法

一 clone()方法将对象复制一份并返回给调用者

a.对任何的对象x,都有x.clone()!=x    // 克隆对象与原对象不是同一个对象;

b.对任何对象x,都有x.clone().getclass()==x.getclass()    // 克隆对象与原对象类型一致;

c.若对象x的equals()方法定义恰当,那么x.clone().equals(x)应该成立;

二 对象的克隆

a.为获取一份对象的拷贝,可利用Object类的clone()方法;

b.在派生类中覆盖基类的clone()方法,并声明为public;

c.在派生类的clone()方法中,调用super.clone();

d.在派生类中实现cloneable接口;


3). equals()方法

        用于判断对象的值是否相等,若用“==”来判断对象是否相等,实际比较的是引用的值(对象的地址)。程序员应该自己覆盖

equals()方法,使得该类的对象能够比较值是否相等。若不覆盖equals()方法,将使用Object类中equals()的定义,直接比较地址

是否相等。

        基本类型比较用==;引用类型与Null比较用==;引用类型之间比较(非空引用)用equals();对象的比较用equals();


4). toString()方法

toString()方法的调用方式:

a. 在进行String与其他类型数据的连接操作时,将自动调用该对象类的toString()方法;

b. 默认情况下,toString()方法返回的字符:

        getClass().getName() + "@" + Integer.toHexString( hashcode() )



2.String类及对象池

String对象是一组不可改变的unicode字符序列;

得到String对象的两种方法:

String str = "bruce";    // 对象池。对象池的存在是为了避免频繁的创建和销毁对象而影响系统性能。

String str = new String("bruce");    // 在内存中new对象



3.内部类(Inner Class)

定义:在一个类内部的类叫做内部类,可看做属性、方法,不可被封装。

分类:静态内部类、成员内部类、局部内部类、匿名内部类。

意义:1.更小层次的封装,把一个类隐藏在另一个类的内部;

            2.方便的在内部类中访问外部类的私有成员。


匿名内部类:

概念:特殊的局部内部类;

特性:无类名;无class关键字;无构造;有继承、无继承关键字;

适用:在生成对象时才给出接口的实现,可以实现运行时接口回调;



4.集合(Collection Framework)

集合是一种数据结构,为了实现快速处理和高效的内存利用率。

1). List(Java.util.List)

        List是一个接口,一个有序、元素可重复的集合。

a.LinkedList:

List接口的链表实现。增删快,查询慢,不同步。

得到LinkedList对象实例:LinkedList  list = new LinkedList();

添加元素:list.add(e)    // 添加元素e到链表尾部;        list.addfirst(e)    // 添加元素e到链表头部;

删除元素:list.clear()    // 移除所有元素;               list.remove()     // 移除第一个元素;       list.remove(index)    // 移除指定元素;

循环遍历每个元素:

Public static void printList(List list){
        ListIterator iterator = list.listIterator();
        while(iterator.hasNext()){
             System.out.print(iterator.next());
        }
}

b.ArrayList:

List接口的数组实现。查询快,增删慢,线程不安全。

得到ArrayList对象实例:    ArrayList  arraylist = new ArrayList();

添加元素:list.add(e)    // 添加元素e至末尾;        list.add(index,e)    // 添加元素e至下标index处;

删除元素:list.clear()    // 移除所有元素;              list.remove(index)    // 移除下标为index的元素;

循环遍历每个元素:

List list = new ArrayList();
Iterator it = list.iterator();
while(it.hasNext()){
    String[ ]  li = it.next();
    System.out.println( li[0] );
}

c.Vector:

List接口的数组实现。线程安全,重量级。


2). Set(Java.util.Set)

无序集合,不可重复元素。

a. 实现类:HashSet    // equals 返回true,hashcode返回相同的整数

b.子接口:SortedSet        实现类:TreeSet    // 二叉树实现


3). Map(Java.util.Map)

a. Hash Map          键(Key)值(Value)对。key不能重复,Value可以重复。

b. Tree Map           实现Map接口。把元素存储在树中。

c. Hash table         把关键字对象映射到值对象,提供允许基于关键字搜索的快速查找方法。

d. Sorted Map        Map的子接口。



5. 泛型(Generic)

        泛型的本质是参数化类型。即所操作的数据类型被指定为一个参数。这种参数类型可用在类、接口、方法的创建中,称为

泛型类、泛型接口、泛型方法。泛型最初的目的是希望类或方法具备更加广泛的表达能力。

泛型的核心概念:告诉编译器想使用什么类型,然后编译器帮你处理一切细节。在使用泛型时,只需要指定其名称和类型即可。

泛型的特点:1.规范参数类型(安全性);    2.避免强制类型转换(高可读性);

泛型出现的位置:1.类名后。List<String> list = new LinkedList<String>();        2.方法返回前。

泛型的六种不能:1.泛型不能new;    2.不支持泛型数组;    3.不能是基本类型;    4.不能用static修饰;    5.Exception、Throwable

                                子类不支持<>;    6.异常处理时,可以抛出,但在catch中不能使用;



6. 异常(Exception)

Java的异常机制:

1.执行到引起异常的语句时,生成异常对象(记录异常信息)并抛出;

2.寻找catch语句,若找到catch语句,则执行,异常处理到此结束;若找不到,继续向上抛出异常,直到找到为止;

3.若在main方法中还未找到,程序中断;

4.每抛出一层,结束本层程序;


异常分类:

1.运行时异常:Runtime Exception类及其子类,可通过编译;

2.受检查异常:除了Runtime Exception类及其子类外,其他的Exception类及子类都属于受检查异常;


异常的处理方式:

1. try...catch...finally    // 捕获异常;

2.throws    // 抛出异常;异常未处理,只是保证编译通过;throws用于抛出异常,但不处理异常,只能检测;


异常处理的语法结构:

try{
    // 可能发生异常的语句;
    }catch(Exception  e){
    // 异常处理语句,语句块不能为空;
    }finally{
    // 异常处理中一定会执行的语句;
    }

异常处理遵循的规则:谁知道谁处理,谁负责谁处理,谁导致谁处理。       

异常是伴随着方法的调用产生和传递的,异常经历的所有方法调用的过程叫做异常的方法栈。



7.反射(Reflection)

反射的机制:

        在java运行环境,对于任意一个类可获知这个类的属性、方法,对任意一个对象可调用它的方法。这种动态获取类的信息,以及

动态调用类的方法的功能来源与java的反射。由于反射的存在使得java具有动态语言的特性。












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光明矢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值