Java语言程序设计(原书第8版)--进阶篇 提示(一)

掌握Java语言基本且必备的知识点,在实践中运用并总结!

1.由于原始类型是不安全的,所以,本书从此不再使用原始类型。

2.可以不使用迭代器,而用for-each循环来简化第18~24行的代码,如下所示:

for(Object element: set)

    System.out.println(element);

这个循环可解释为“对规则集中的每个元素做以下操作”。for-each循环可用在数组上(参见6.2.7节),也可用任何collection的实例上。

3.如果不需要维护元素被插入的顺序,就应该使用HashSet,它会比LinkedHashSet更加高效。

4.当更新一个规则集时,如果不需要保持元素的排序关系,就应该使用散列集,因为在散列集中插入和删除所花的时间比较少。当需要一个排好序的集合时,可以从这个散列集创建一个树形集。

5.为了从泛型类型的可变长参数创建线性表,Java提供了静态的asList方法。这样,就可以用下面的代码创建一个字符串线性表和一个整数线性表:

List<String> list1 = Arrays.asList(“red”, “green”, “blue”);

List<Integer> list2 = Arrays.asList(10, 20, 30, 40, 50);

6.如果更新图时不需要保持图中元素的顺序,就使用HashMap;如果需要保持图中元素的插入顺序或访问顺序,就使用LinkedHashMap;如果需要使图按照键值排序,就使用TreeMap。

7.在Java将来的版本中,优先级的数字可能会改变。为将这种变化带来的影响降到最低,可以使用Thread类中的常量来指定优先级。

8.如果总有一个优先级较高的线程在运行,或者有一个相同优先级的线程不退出,那么这个线程可能永远也没有运行的机会。这种情况称为资源竞争或缺乏状态(contention or starvation)。为避免竞争现象,高优先级的线程必须定时地调用sleep方法或yield方法,来给低优先级或者同优先级的线程一个运行的机会。

9.如果需要为一个任务创建一个线程,就是用Thread类。如果需要为多个任务创建线程,最好使用线程池。

10.在对lock()的调用之后,紧随一个try-catch块并且在finally字句中释放这个锁是一个很好的习惯,如第41~57行所示,这样可以确保锁被释放。

11.当编写Swing GUI程序时,需要记住一下两件事情:

  • 费时的任务应该在SwingWorker中运行。

  • Swing的组件只能由时间分发线程访问。

12.由于文本I/O需要编码和解码,所以,二进制I/O的效率比文本I/O的效率更高。因此,最好使用二进制I/O在服务器和客户端之间进行数据传输,以便提高效率。

13.可以在Locale类中调用静态方法getAvailableLocales(),从而获得系统中所有可用的语言环境。例如,

Locale[] availableLocales = Calendar.getAvailableLocales();

它会发会数组中所有的语言环境。

14.电脑里有一个默认的语言环境。当运行程序时,可以通过提供语言和地区等参数来覆盖它。例如,

java -Duser.language=zh -Duser.region=CN MainClass

15.如果资源值是一个字符串,可以使用更方便的getString方法代替getObject方法,getString方法简单地将getObject返回的值转换成一个字符串。

16.在多数情况下,使用ActionEvent/ActionListener事件组就足够了。通常,事件信息可以从源组件中获取。例如,课程的学生人数以及招生情况都能从课程对象获得。源组件通过调用任何事件e的e.getSource()方法获得。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值