ASPectra"/>
我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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中改变最大的六个方面吗?

 好的,

  • 泛型编程 – 提供集合对象的编译时安全类型检查。
  • 增强 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 – 避免编写描述信息的代码,实现“声明”编程的模式。程序员声明需要做什么,然后由相关的工具来完成具体的工作。

过滤一个集合中的元素,现在的做法和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

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

J2SE1.5的新特点(之一) (转)[@more@]j2se1.5的新特点XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />ASPectra
2023-06-03

Java_Spring之Spring5 的新特性

这篇文章主要介绍了Java_Spring中Spring5 的新特性,需要利用jdk8 版本更新的内容,依赖库更新,感兴趣的小伙伴可以参考阅读
2023-05-14

C++11新特性之四种类型转换cast说明

类型转换是项目中常使用的一种语法规则,几乎每个编程语言都不可避免的涉及到这方面,下面这篇文章主要给大家介绍了关于C++11新特性之四种类型转换cast说明的相关资料,需要的朋友可以参考下
2023-02-09

Android5.0新特性详解之全新的动画

在Material Design设计中,为用户与app交互反馈他们的动作行为和提供了视觉上的连贯性。Material主题为控件和Activity的过渡提供了一些默认的动画,在android L上,允许自定义这些动画: Touch feed
2022-06-06

Java新特性之Nashorn_动力节点Java学院整理

Nashorn是什么Nashorn,发音“nass-horn”,是德国二战时一个坦克的命名,同时也是java8新一代的javascript引擎--替代老旧,缓慢的Rhino,符合 ECMAScript-262 5.1 版语言规范。你可能想j
2023-05-31

Java8新特性之StampedLock_动力节点Java学院整理

Java8就像一个宝藏,一个小的API改进,也足与写一篇文章,比如同步,一直是多线程并发编程的一个老话题,相信没有人喜欢同步的代码,这会降低应用的吞吐量等性能指标,最坏的时候会挂起死机,但是即使这样你也没得选择,因为要保证信息的正确性。所以
2023-05-31

Eclipse3.3新特性体验之最大化最小化改进(转)

Eclipse3.3新特性体验之最大化最小化改进[@more@]研究了整整一下午也没有发现有什么方法可以设置一个Viewer让它在透视图启动的时候自己做最小化,其实刚开始思路是不对的,不应该考虑让Viewer自己有什么变化;Viewer的大
2023-06-03

Go语言的创新之处:新特性解析

Go语言的创新之处:新特性解析随着互联网技术的不断发展,越来越多的程序员开始关注Go语言,这门由Google开发的静态类型编程语言以其简洁、高效和并发特性备受推崇。Go语言自发布以来不断发展,不断推出新特性以提高开发效率和性能。本文将针对
Go语言的创新之处:新特性解析
2024-03-11

JSP的一些要点(转)

作者:ybwen如何混合使用Jsp和SSI #include?在JSP中可以使用如下方式包含纯HTML:在JSP中如何执行浏览重定向?使用如下方式即可:response.sendRedirect("http://ybwen.home.chi
2023-06-03

WEBJX整理几条Windows 8系统的新特性的特点

SmartScreen   Wiwww.cppcns.comndows 8将内置Internet Explorer 9的SmartScreen功能,并且可以在‘文件夹选项’中启用。   IE中的SmartScreen
2023-05-25

以下哪些是云服务器ecs的优势特点之一

云服务器ECS是一种服务器托管服务,通常用于构建大规模的云计算基础设施。它具有以下几个优势特点:成本优势:云服务器的租用成本相对较低,因为它们使用公共云计算提供商的资源。这意味着您只需要支付一次性成本,而不必担心长期成本问题。灵活性和可扩展性:云服务器允许您根据需要随时扩展或缩减规模,并且可以按需扩展。这使得您可以灵活地管理和分配资源,而无需管理多个物理机器或虚拟机。快速恢复和故障转移:
2023-10-26

Java8新特性之再见Permgen_动力节点Java学院整理

很多开发者都在其系统中见过“java.lang.OutOfMemoryError: PermGen space”这一问题。这往往是由类加载器相关的内存泄漏以及新类加载器的创建导致的,通常出现于代码热部署时。相对于正式产品,该问题在开发机上出
2023-05-31

Java8新特性之Base64详解_动力节点Java学院整理

BASE64 编码是一种常用的字符编码,在很多地方都会用到。但base64不是安全领域下的加密解密算法。能起到安全作用的效果很差,而且很容易破解,他核心作用应该是传输数据的正确性,有些网关或系统只能使用ASCII字符。Base64就是用来将
2023-05-31

golang泛型的特点和限制:探索值得的新特性

golang泛型的优势和限制:值得一试的新特性,需要具体代码示例摘要:Golang是一种强类型的静态语言,一直以来,其缺乏泛型特性一直备受争议。然而,近期Golang开发团队正积极推进泛型特性的引入,以提供更高的代码复用性和可读性。本文将
golang泛型的特点和限制:探索值得的新特性
2024-01-20

Java Spring之Spring5的新特性有哪些

这篇文章主要介绍“Java Spring之Spring5的新特性有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java Spring之Spring5的新特性有哪些”文章能帮助大家解决问题。1
2023-07-05

哪个不是云服务器ecs实例类型的特点之一

以下是云服务器ECS实例类型的一些特点:高可用性:云服务器ECS采用多台计算机共享同一个存储设备,这样它们就可以通过同一台计算机上的同一个软件来实现数据一致性。高可用性是指当某个实例出现故障时,其它实例能够立即接管并开始处理业务。快照功能:云服务器ECS使用高性能的文件系统或数据库来存储数据,这些文件或数据库可以在不经常访问的情况下存储在本地,从而提高了实时数据访问的速度和可靠性。支持分布式架构:云服务器...
2023-10-27

哪些是阿里云云服务器ecs的优势特点之一

阿里云云服务器ecs是一个广受欢迎的云计算平台,它具有以下优势和特点:优势:1.快速稳定:阿里云ecs的服务器ecs可以快速稳定运行,因为它们使用了阿里云的高稳定性的云计算平台,能够提供稳定可靠的数据中心服务和云存储服务。可扩展性强:阿里云ECS的服务器ECS可以按需扩展,无需购买新的服务器或硬件资源,可以轻松地扩展到多个云计算平台或应用程序。安全性较高:阿里云ECS采用了阿里云最先进
2023-10-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录