ASPectra"/>

文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

J2SE1.5的新特点(之一) (转)

2023-06-03 05:08

关注
J2SE1.5的新特点(之一) (转)[@more@]

j2se1.5的新特点XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

ASPectratio="t" v:ext="edit">2003-5-10021190.gif" o:href="http://Java.sun.com/features/2002/10/images/face_q.gif"> J2SE 的下一个版本名字叫“Tiger”在让程序员的代码更清楚、更短、更安全,更加容易开发的情况下不损失其兼容性。 请你简单谈谈J2SE 1.5 的优点。

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

  什么改变对程序员来说是最困难的呢?那些改变是程序员不的不面对的呢?

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

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

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

使用:

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

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

 好的,

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

现在的做法是:

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 c) {

  for (Iterator i = c.iterator(); i.hasNext(); )

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

  i.remove();

}

  再说说增强的for循环吧!

  一个集合中元素的迭代,原来的做法绕的慌。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 。但是考虑到兼容性,我们没有那样做。

泛型编程和增强的for结合后会是什么结果呢?

  上面的例子中的代码,可以用下面的代码表示:

void cancelAll(Collection c) {

  for (TimerTask task : c)

  task.cancel();

}

什么是装箱?

  大家知道,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

  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 m = new TreeMap();

  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


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯