Java解惑 种之谜篇
前言:最近看了Java解惑,觉得里面的问题轻松诙谐,一些问题和提示都具有参考价值。学习Java,看了都或多或少的有点收获。
1、要么使用积极初始化,要么使用延迟初始化,千万不要同时使用。
2、Java的重载解析过程可以分为两个阶段。第一阶段,选取所有可获得并且可应用的方法或构造器。第二阶段,在第一阶段选择的方法或构造器中选取最精确的一个。
3、想要强制要求编译器选择一个精确的重载版本,需要将实参转型为形参所声明的类型。
4、重载版本的解析可能会产生混淆,应该尽可能避免重载。如果确定进行了重载,请保证所有的重载版本所接受的参数类型都是互不兼容的。
5、静态字段由声明它的类及其子类所共享。如果需要让每一个子类都具有某个单独副本,那么必须在每一个子类中声明一个单独的静态字段。
6、当拿不准时,优选组合而不是继承。
7、静态方法是不能被覆写的,它们只能被隐藏。因此,千万不要隐藏静态方法。
8、要用类名来修饰静态方法的调用。
9、instanceof操作符被定义为在做操作数为null时返回false。
10、如果两个操作数的类型都是类,其中一个必须是另一个的子类型。
11、请考虑类初始化的顺序,特别是当初始化显得很重要时更是如此。
12、一个局部变量声明作为一条语句只能直接出现在一个语句块中。
13、在使用一个变量来对实例的创建进行计数时,要使用long类型而不是int类型的变量,以防止溢出。
14、如果你使用的是5.0或更新的版本,你可以使用一个AtomicLong实例,它可以在面临并发时绕过对同步的需要。允许那些处理基于数字类的工具和实用工具进行统一访问。
15、除了覆写之外,要避免名字重用。
16、Java语言允许隐藏变量、嵌套类型、甚至是静态方法,但是你不能认为就应该去隐藏。
17、要避免重用类名,尤其是Java平台类的类名。
18、一个包内私有的方法不能被位于另一个包中的某个方法直接覆写。包内私有的方法是它们所属包的实现细节,在包外重用它们的名字是不会对包内产生任何影响的。
19、本身就属于某个作用域的成员在该作用域内与静态导入相比具有优先权。
20、应该有节制地使用静态导入,只要在非常需要的情况下才使用它们。
21、final修饰符对于方法,意味该方法不能被覆写(对实例方法而言),或者隐藏(对于静态方法而言)。对于字段,final意味该字段不能被赋值超过一次。关键字相同,但是其行为却完成不相关。
22、如果同一个方法的两个重载版本都可以应用于某些参数,那么它们应该具有相同的行为。
附注:先整理第4章类之谜和第8章更多类之谜。这些都是本人觉得比较有价值的提示,大家可以参考下。之后陆续整理出来,分享分享。如果看过这本书了,可以回味回味。没有看过的,可以收藏下。这些忠告都是比较不错的,时不时拿出来提醒下自己。
地址:有兴趣的可以到这里下载电子书,我发****上了。http://download.****.net/detail/lianggzone/5221067