首页 > 编程语言 > 详细

Head First Java(第二版)——第五天

时间:2021-05-12 09:54:43      阅读:14      评论:0      收藏:0      [点我收藏+]

16、集合与泛型

    (1)要使用TreeSet,下列其中一项必须为真

        集合中的元素必须是有实现Comparable的类型(得覆写compareTo(Object o)这个方法)

        使用重载、取用Comparator参数的构造函数来创建TreeSet(传入Comparator接口,覆写compare(Object one,Object two)这个方法)

    (2)数组的类型检查是在运行期间检查的,但集合的类型检查只会发生在编译期间。如果方法声明中参数为ArrayList<Animal>,它就只会取用ArrayList<Animal>,ArrayList<Dog>与ArrayList<Cat>都不行,因为假设你对Dog[]加入一个Cat(把Dog[]传入声明为Animal[]的参数中是完全合法的操作),编译是可以的,但运行的时候会报错。

    (3)在方法参数中使用万用字符时,编译器会阻止任何可能破坏引用参数所指集合的行为,你能够调用list中任何元素的方法,但不能加入元素,也就是说,你可以操作集合元素,但不能新增集合元素。如此才能保障执行期间的安全性,因为编译器会阻止执行期的恐怖行动。

 


17、包、jar存档文件和部署

    无


18、远程部署的RMI

    (1)RMI(Remote Method Invocation):远程程序调用

    (2)远程接口必须要extend过java.rmi.Remote这个接口,且所有的方法都必须声明RemoteException。


附录B

为什么要在乎String的不变性?

  当程序越来越大时,不可避免地会有很多String对象,为了安全性和节省空间(例如在手机上执行)的原因,String是不变的,意思是下面的代码

String s = “0”;
for(int x = 1; x < 10; x++){
    s = s + x;
}

  实际上会创建10个String对象(“0”,“01”,“012”.....“0123456789”)。最后会引用到“0123456789”这个值,但此时会存在10个String,创建新的String时,Java虚拟机会把它放到称为“String Pool”的特殊存储区中,如果已经出现同值的String,Java虚拟机不会重复建立String,只会引用已存在者。这是因为String是不变的,引用变量无法改变其它参考变量引用到的同一个String值。

 

Head First Java(第二版)——第五天

原文:https://www.cnblogs.com/hlyxd/p/14753625.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!