Core JAVA 读书笔记

1.无论什么时候,对于下面这种形式的代码:

if(x if of type 1)

    action1(x)

else if(x is of type 2)

    action2(x)

都应该考虑使用多态性。action1与action2表示的是相同的概念嘛?如果是相同的钙奶年,就应该为这个概念定义一个方法,并将其放置在两个类的超类或借口中,然后就可以调用 x.action();以便使用多态性提供的动态分派机制执行相应的动作。

2.由于很多程序猿发现大量的使用匿名内部类会让程序更加难于理解,所以,建议限制使用它。

3.StringBuilder类是 JDK 5.0新引入的。它的前身StringBuffer 的效率稍稍偏低一点,但是却可以允许多线程进行增加或移除字符操作。如果所有的字符串编辑出啊线在一个线程中,应该改用StringBuilder。这两个类的API都是相同的。

 4.不要调用Tread类或Runnable对象的run方法。直接调用run方法只会在当前线程中执行任务,并不会启动新的进程,正确的做法是调用Tread.start方法,他会建立一个新的线程来执行run方法。

5.JDK5.0开始,有两种机制来保护代码块不受并行访问的干扰。旧版本的JAVA使用synchronized关键字来达到这个目的,而JDK5.0引进了ReentrantLock类。synchronized关键字自动提供了一个锁和相关的“条件”。


6.在代码中应该使用哪一种呢?Lock和Condition对象还是synchronized方法?下面是我们的建议:


  • 最好既不使用Lock/Condtion也不适用synchronized关键字。在很多情况下,你可以使用java.util.concurrent包中的一种机制,它会为你处理所有的加锁。例如在本书48页,你将看到如何使用阻塞队列来同步完成一份共同任务的线程。
  • 如果synchronized关键字在你的程序中可以工作,那么尽量使用它,这样可以减少你的代码数量,减少出错分几率。例1-5显示了用同步方法实现的银行实例。
  • 只有在你非常需要Lock/Condition结构的独有特性的时候才使用它们。


7.Vector类的所有方法都是同步的。你可以用两个线程安全地访问Vector对象。相反,ArrayList类的方法是不同步的,因此我们建议在不需要同步时使用ArrayList而不是Vector.


8. foreach 用法

int[][] a={
		{1,2,3 },
		{4,5,6 },
		{7,8,9 },
	};

		for(int[] b : a)
			for(int j: b){
				System.out.println(j);
			}

转载于:https://my.oschina.net/bea/blog/79732

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值