J2SE1.5的新特点(之一)

原创 2003年05月27日 11:23:00

J2SE1.5的新特点<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />CSDN_Dev_Image_2003-5-10021190.gif J2SE 的下一个版本名字叫“Tiger”在让程序员的代码更清楚、更短、更安全,更加容易开发的情况下不损失其兼容性。 请你简单谈谈J2SE 1.5 的优点。

 

CSDN_Dev_Image_2003-5-10021192.gif  新的java语言特点都基于一个目的:尽量使它们都使用一些相同的语法习惯并提供语义支持。也就是说:以前程序员需要书写的很多语义编程格式的工作在新的程序中由编译器来做。

CSDN_Dev_Image_2003-5-10021190.gif  什么改变对程序员来说是最困难的呢?那些改变是程序员不的不面对的呢?

 CSDN_Dev_Image_2003-5-10021192.gif 一般来说,没有什么让人感到困难的改变,泛型编程的改变可能大些。使用泛型编程需要在声明的时候提供附加的声明信息。比如:
    List words = new ArrayList();
需要替换成:
    List<String> words = new ArrayList<String>();

这样做的一个优点是,如果你插入数组的数据类型不是字符串的话,你就可以在编译的时候发现和解决这个bug。如果不使用上面的声明,这个bug不可能在编译的时候发现,程序运行后会出现ClassCastException 的错误。
   
另一个好处是:你不在需要担心集合中的元素超出了范围:

    String title = ((String) words.get(i)).toUppercase();

使用:

    String title = words.get(i).toUppercase();

CSDN_Dev_Image_2003-5-10021190.gif  你能简单的介绍一下这些J2SE 1.5中改变最大的六个方面吗?

CSDN_Dev_Image_2003-5-10021192.gif 好的,

  • 泛型编程 提供集合对象的编译时安全类型检查。

  • 增强 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避免编写描述信息的代码,实现“声明”编程的模式。程序员声明需要做什么,然后由相关的工具来完成具体的工作。

CSDN_Dev_Image_2003-5-10021190.gif过滤一个集合中的元素,现在的做法和j2se1.5中的做法有什么不同呢?

CSDN_Dev_Image_2003-5-10021192.gif现在的做法是:

/**

 * 从一个指定的集合中去掉一个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<String> c) {

    for (Iterator<String> i = c.iterator(); i.hasNext(); )

        if (i.next().length() == 4)

            i.remove();

}

CSDN_Dev_Image_2003-5-10021190.gif   再说说增强的for循环吧!

CSDN_Dev_Image_2003-5-10021192.gif    一个集合中元素的迭代,原来的做法绕的慌。J2SE1.5中大多数情况下你不需要使用Iterate 来遍历一个集合。增强的for循环,让编译器来完成具体的迭代工作。比如:
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 。但是考虑到兼容性,我们没有那样做。

CSDN_Dev_Image_2003-5-10021190.gif泛型编程和增强的for结合后会是什么结果呢?

 CSDN_Dev_Image_2003-5-10021192.gif上面的例子中的代码,可以用下面的代码表示:

void cancelAll(Collection<TimerTask> c) {

    for (TimerTask task : c)

        task.cancel();

}

CSDN_Dev_Image_2003-5-10021190.gif什么是装箱?

CSDN_Dev_Image_2003-5-10021192.gif    大家知道,java语言中有两种数据类型:一些是基本数据类型,另一些是对象引用类型。基本的数据类型无法直接放入到集合中,除非做相应的类型转换。这种转换非常枯燥。

据个例子:
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<args.length; 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<String, Integer> m = new TreeMap<String, Integer>();

       for (String word : args)

           m.put(word, m.get(word) + 1);

       System.out.println(m);

    }

}

需要注意:上面的程序假定拆箱为null的时候,值为0

 

之二:

http://www.csdn.net/develop/read_article.asp?id=18442

 

版权声明:本文为博主原创文章,在不删除、修改文章内容的情况下,可以自由转载。

J2SE1.5的新特点(之二)

J2SE1.5的新特点(之二) 类型安全的枚举比以前的枚举有什么优点呢? 有如下特点: 提供编译时int枚举的安全检查,同时不再提供其他类型安全检查。 提供了枚举的命名空间 可以直接把它们放到集合中。...
  • accesine960
  • accesine960
  • 2003年05月27日 11:14
  • 1239

jdk1.5新特点之一:遍历

public class A { public static void main(String[] args){  int[] nums = {1,2,3,4};   for(int num :num...
  • javaindex
  • javaindex
  • 2008年10月29日 21:11
  • 195

更新maven依赖时 项目默j2SE1.5版本

只需要在maven项目的pom.xml中将编译器的版本指定为1.8即可 代码如下 org.apache.maven.plugins ...
  • u012156858
  • u012156858
  • 2017年02月06日 16:09
  • 2100

SQL Server 2005的30个最重要特点

数据库管理10个最重要的特点 特点 描述 ...
  • webor
  • webor
  • 2006年11月16日 22:53
  • 296

PHP5.5新特点

1.放弃对于Windows XP以及Windows 2003版本的支持; 2.弃用e修饰符,作为替代.可以使用Perg_replace_callback函数; 3.生成器yoeld关键字,功能是有...
  • wangyulong12344321
  • wangyulong12344321
  • 2017年09月07日 11:24
  • 48

J2SE1.5的变化

J2SE 1.5(开发代号“Tiger”)是Java平台和语言上的一个重要修改,在这里记录其主要的修改其中swing Api的修改是最大的,但是对Swing没什么研究,所以只把原文记录如下:http:...
  • tian_co
  • tian_co
  • 2004年12月24日 23:34
  • 372

谷歌浏览器的一个新特点

谷歌浏览器的一个新特点   谷歌浏览器在调试JavaScript脚本方面很方便,今天在使用谷歌浏览器调试代码时无意间发现了一个奇特的问题:Blockedaframewithorigin"null...
  • wdly16526857
  • wdly16526857
  • 2014年05月14日 15:15
  • 82

移动互联网时代的新特点

两次世界大战之后开始的第三次工业革命创了“信息时代”(1950-),全球信息和资源交流变得更为迅速,大多数国家和地区都被卷入到全球化进程之中,世界政治经济格局进一步确立,人类文明的发达程度也达到空前的...
  • computerme
  • computerme
  • 2014年09月25日 14:50
  • 2170

asp.net2.0新特点

  Asp.net2.0中控件或属性的改变 TextBox控件:2.0中添加了Au...
  • wolflion
  • wolflion
  • 2007年09月19日 15:57
  • 737

j2se1.5新特性

最近在复习j2se的东西,顺便也想写点文章,把以前的东西总结一下。。1.5新特性感觉还是不错的。。一、可变参数。。代码如下:public class MyTest { public static...
  • xiaoyi3317
  • xiaoyi3317
  • 2009年12月12日 16:33
  • 641
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:J2SE1.5的新特点(之一)
举报原因:
原因补充:

(最多只允许输入30个字)