Java 基础二

一、

重写equals方法时有以下几步工作需要完成

    a、首先应该测试两个引用是否指向同一个对象

    b、接下来应该测试传递进来的引用是否为null

    c、然后测试传递进来的对象应用是否通过自己类型的instanceof测试

    d、将传递进来的引用强制类型转换为自己的类型,测试相关的成员是否等价

重写了equals方法就必须重写hashcode方法,否则两个等价的对象可能是得到了不同的哈希吗,这在集合框架的使用中有可能产生严重的问题。

二、

下面几个类与接口是属于ordered排序的

ArrayList 类、Vector类、LinkedList类、List接口、LinkedHashSet类

三、

下面几个类与接口是属于sorted排序的

TreeSet类、TreeMap类、SortedSet接口、SortedMap接口

四、

若开发人员需要一个不能有重复元素并且不考虑索引的集合时,可以使用实现了Set接口的类

五、

LinkedHashSet---------------------------有序、不重复元素

六、局部变量与局部内部类

在非静态成员内部类中可以访问外部类的任何成员,而在局部内部类中一样可以访问外部类的成员,但却不可以访问同在一个局部的普通局部变量。

局部内部类可以访问final的局部变量,原因如下:

       ①普通的局部变量随着所在语句块的执行结束而消亡,而创建的局部内部类对象并不会随着语句块的结束而消亡。如果在语句块结束后,调用了局部内部类对象中访问普通局部变量的方法就要出现问题,因为此时要访问的局部变量不存在了。

      ②final的局部变量的存储方式与普通局部变量不同,其不会因为语句块的结束而消失,还会长期存在,因此可以被局部内部类访问。

七、静态/非静态内部类的区别

①非静态内部类应该与外部类的对象存在着对成员的共享关系,其是外部类对象组成的一部分,用来辅助外部类对象工作。

②而静态内部类与外部类对象之间则没有这样的关系,静态内部类其实已经脱离了外部类的控制。在创建其对象时已经不再需要外部类对象的存在,其实质上只是一个放置在别的类中的普通类而已。而static关键字只是说明其在创建对象时,不依赖于外部类对象的存在,并不是说这个类本身是静态的。

八、

匿名内部类没有名称,因此匿名内部类在声明类的同时也创建了对象。匿名内部类的声明要么是基于继承的,要么是基于实现接口的。

在特定情况下匿名内部类可以减少很多冗余的代码,大大简化开发。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值