最近一直在准备面试,对新的知识的学习也慢了下来,主要是巩固Java基础知识。今天看了String、StringBuffer、StringBuilder,被其中的一些概念搞的晕头转向,比如什么可变类、不可变类、线程安全、线程不安全,看了网上的一些解释,都觉得不太满意,只能查阅专业的书籍,大名鼎鼎的《Java编程思想》。
以前刚入门Java的时候,也听过《Java编程思想》,可以说是Java编程的圣经,但当时只是泛泛而读,作为刚入门的菜鸟,对其中的思想还是不甚了解,甚至读不下去(太厚了)。但深入学习Java后才知道自己的水平低的可怜,当我再次吹去该书的灰尘,重新捧起这本书时,真是觉得受益匪浅啊!也趁着准备面试这一阶段,温故而知新,基础真的很重要啊!废话不多说,马上转入正题。(以下部分摘自Java编程思想)
1.final修饰数据:
a.当数据是基本数据类型时,表明该数据是一个编译时常量,定义是必须赋上初始值。比如:final int a=1;
b.当数据是引用类型(即对象)时,一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象,然而,这个引用所指向的对象自身确实可以被修改的。
2.final修饰方法:明确禁止子类覆盖父类的final方法,如果子类覆盖了父类的final方法,会出现编译时异常。
3.final修饰类:明确禁止该类不可被继承,注意:final修饰的类里面的数据和方法不一定是final的,其规则适用于1和2。
总结完了final的用法,我才知道原来final类和不可变类是两回事,以前总以为他们两是一样的。不知你搞清了没有?