论坛首页 编程语言技术论坛

JDK 5.0(Tiger)中的一些新特性(1):

浏览 3711 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (12) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-04-05  

 

5.0中引入了可变参数:

invoke(Object objObject... args)

1.4中使用的还是数组:

invoke(Object obj ,Object[] args)

 

为了兼容1.4版本,如果在向invoke中传入的对象是一个数组类型的时候,我们要么再加一层数组嵌套,要么利用强制转换告诉jvm这里是一个对象。因为如果没有特殊处理的话,jvm将按照1.4的方法处理,即把数组拆开!

 

MethodCharAt.invoke(str,new Object[]{new int[]{2}});

MethodCharAt.invoke(str,(Object)new int[]{2});

 

可变参数特点:

1,只能出现在参数列表的最后;

2... 位于变量类型和变量名之间,前后有无空格都可以。

3,调用可变参数的方法时,编译器为该可变参数隐含创建了一个数组,在方法中以数组的形式访问可变参数。

由于可变参数这个特性是在jdk5.0出现的,所以为了兼容老版本,在使用可变参数时,如果我们希望传入的是一个数组,那么jvm会把这个数组拆开,为了避免这样的情况我们可以,在这个数组外面再加一层数组或者申明这个数组是Objecct的。

Example

在反射中我们用到的这段代码:

MethodCharAt.invoke(str,new Object[]{new int[]{2}});

MethodCharAt.invoke(str,(Object)new int[]{2});

 

增强for语句for\in or foreach:

5.0出现的新特性。格式:for(type variableName : variabaleSet){...}

 

注意事项:

1,迭代的变量必须在()中定义;

2,集合变量可以是数组集合或实现了Iterable接口的集合类。

 

注释快捷键:ctrl+shift+/ ;

取消注释快捷键:ctrl+shift+\ ;

 

如何获得新的知识?去oracle官网下载最新JDK的语言规范(langspec

英语词汇:specification 规范,明确说明,说明书。

 

自动装箱:基础数据类型(primitive data type)——>相应的对象。

Integer iObj = 12;

 

自动拆箱:对象——>相应的基础数据类型。

sop( iObj + 12 );

 

java中在创建一个小于127Integer对象时,先到缓冲池中去找有没有一个一样的对象,如果没有就创建一个,如果有直接指向那个对象,这是因为小于127的比较常用,所以可以节省内存资源,这里使用了享元设计模式。

 

强调:Integer小于127的如果内存中存在相同的,就不再建立新的对象。

 

享元模式(flyweight):如果有很多很小的对象,我们会经常用到,用的时候该对象的内部状态都没有变化,那么就可以把他变成一个对象。那些不同的属性把它变成方法的参数(外部状态),那些相同的属性叫内部状态。

 

Alt+shift+x:运行;

Alt+shift+x  j:运行java Application

 

 

   发表时间:2013-04-08  
不能发点1.7的新特性么...
0 请登录后投票
   发表时间:2013-04-08  
1.5应该是现在JVM版本的最低要求了吧。
0 请登录后投票
   发表时间:2013-04-08  
chen88358323 写道
不能发点1.7的新特性么...

JDK 7.0在开发中用得太少,而且刚出来不稳定有很多漏洞,5.0和6.0是现在的主流
0 请登录后投票
   发表时间:2013-04-08  
Tyrion 写道
1.5应该是现在JVM版本的最低要求了吧。

但是现在做开发大多都是用这个版本的呀
0 请登录后投票
   发表时间:2013-04-09  
上次用5还是几年前?忘记了。。。
现在是讨论8的时候了
0 请登录后投票
   发表时间:2013-04-10   最后修改:2013-04-10
wangjie2013 写道
chen88358323 写道
不能发点1.7的新特性么...

JDK 7.0在开发中用得太少,而且刚出来不稳定有很多漏洞,5.0和6.0是现在的主流


呵呵,7.0有漏洞,5.0和6.0就没有漏洞?按你的思路,jdk是因为5.0和6.0都已经没有漏洞了,所以放弃了维护,然后在更新出来一个有漏洞的jdk7.0是么????而且漏洞是在什么地方你全然不知,所以按你的思路,我可以告诉你5.0和6.0漏洞也依然不少。
哎。。。多了解了解java的动态吧,5.0和6.0所谓的主流,就因为目前有些老的程序5.0和6.0就可以跑,而且懒得做7.0的更新升级。
oracle对jdk5.0和6.0已经放弃维护和更新了,而主推7.0。

闭门造车很可怕,不要以讹传讹,要有自己的判断力,这对程序员来说很总要。
0 请登录后投票
   发表时间:2013-04-10  
richard_2010 写道
上次用5还是几年前?忘记了。。。
现在是讨论8的时候了

应该是用7论8
0 请登录后投票
   发表时间:2013-04-10  
MrLee23 写道
wangjie2013 写道
chen88358323 写道
不能发点1.7的新特性么...

JDK 7.0在开发中用得太少,而且刚出来不稳定有很多漏洞,5.0和6.0是现在的主流


呵呵,7.0有漏洞,5.0和6.0就没有漏洞?按你的思路,jdk是因为5.0和6.0都已经没有漏洞了,所以放弃了维护,然后在更新出来一个有漏洞的jdk7.0是么????而且漏洞是在什么地方你全然不知,所以按你的思路,我可以告诉你5.0和6.0漏洞也依然不少。
哎。。。多了解了解java的动态吧,5.0和6.0所谓的主流,就因为目前有些老的程序5.0和6.0就可以跑,而且懒得做7.0的更新升级。
oracle对jdk5.0和6.0已经放弃维护和更新了,而主推7.0。

闭门造车很可怕,不要以讹传讹,要有自己的判断力,这对程序员来说很总要。

接受你的批评,不过你说的也太片面了。难道现在做开发的就没有用5.0的吗?我们公司做的一个也算大的项目吧,九百多人编了快一年半了,也快要完成了。jdk就是5.0的。我也纳闷架构师为什么不选用7.0呢。。。。。。

oracle公司要出升级jdk是因为他发现现有jdk的功能不能满足未来的需求,比如jdk 8的升级就是重点发力云计算方向。
这可以说是一次革命性的升级,内部实现和主体框架都有涉及到,就像java1.4版本到java5一样,多了许多强大的新的功能。而且在一定程度上改变了编程者的思想。一次升级必定带来源码的修改,刚出来是肯定会存在许多问题,需要实践来打磨,现在公司做开发讲求的就是稳定和安全,java5和java6出来以后经过这些年的打磨,也算的上安全了(如果报出什么大漏洞,oracle公司早就该停止使用了)。
现在做web开发,java5和java6足以,需要的功能都有,杀鸡何必用牛刀?
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics