J2SE1.5的新特点(之一)(转)
j2se1.5的新特点XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />
温州网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、自适应网站建设等网站项目制作,到程序开发,运营维护。成都创新互联从2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。
List words = new ArrayList();
需要替换成:
List
这样做的一个优点是,如果你插入数组的数据类型不是字符串的话,你就可以在编译的时候发现和解决这个bug。如果不使用上面的声明,这个bug不可能在编译的时候发现,程序运行后会出现ClassCastException 的错误。
另一个好处是:你不在需要担心集合中的元素超出了范围:
String title = ((String) words.get(i)).toUppercase();
使用:
String title = words.get(i).toUppercase();
- 泛型编程 – 提供集合对象的编译时安全类型检查。
- 增强 for 循环 - 编程更容易,去掉了修正了导致迭代出错的问题。
- 装箱/拆箱 - 原始类型(int)和封装类型(Integer)的转换更容易。
- 类型安全的枚举 – 提供了最常使用的类型安全的枚举模式。(Effective Java, Item 21)
- 静态导入Static import - Lets you avoid qualifying static members with class names, without the shortcomings of the Constant Interface antipattern (Effective Java, Item 17).
- Metadata – 避免编写描述信息的代码,实现“声明”编程的模式。程序员声明需要做什么,然后由相关的工具来完成具体的工作。
/**
* 从一个指定的集合中去掉一个4个字符的元素。
*/
static void expurgate(Collection c) {
for (Iterator i = c.iterator(); i.hasNext(); ) {
String s = (String) i.next();
if(s.length() == 4)
i.remove();
}
}
上面的代码,有些缺陷,在运行的过程中可能出错。比如:在集合中如果包含一个StringBuffer类型的数据。
以后可以这样做:
static void expurgate(Collection
for (Iterator
if (i.next().length() == 4)
i.remove();
}
void cancelAll(Collection c) {
for (Iterator i = c.iterator(); i.hasNext(); ) {
TimerTask tt = (TimerTask) i.next();
tt.cancel();
}
}
现在可以这样做:
void cancelAll(Collection c) {
for (object o : c)
((TimerTask)o).close();
}
注意:上面的冒号,它表示:in。在C#中或者很自然的一个替代是:foreach 和in 。但是考虑到兼容性,我们没有那样做。
void cancelAll(Collection
for (TimerTask task : c)
task.cancel();
}
据个例子:
map数据类型的key用来存储单词,value用来存储单词重复的次数。这是一个计算单词出现频率的小程序。
public class Freq {
private static final Integer ONE = new Integer(1);
public static void main(String args[]) {
Map m = new TreeMap();
for (int i=0; i
Integer freq = (Integer) m.get(args[i]);
m.put(args[i], (freq==null ? ONE :
new Integer(freq.intValue() + 1)));
}
System.out.println(m);
}
}
下面是采用装箱,泛型,和增强的for循环后的代码:
public class Freq {
public static void main(String args[]) {
Map
for (String word : args)
m.put(word, m.get(word) + 1);
System.out.println(m);
}
}
需要注意:上面的程序假定拆箱为null的时候,值为0。
之二:
.NET/develop/read_article.asp?id=18442">http://www.csdn.net/develop/read_article.asp?id=18442
当前文章:J2SE1.5的新特点(之一)(转)
文章源于:http://azwzsj.com/article/jjsghs.html