`
wangjie2013
  • 浏览: 168682 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • JAVA
阅读更多

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

       Last modified:2013-04-06 23:57:27

       ***********************************************

 

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

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics