Java5.0新特性(归结)

1.泛型(Generic)
  C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。

 

2.For-Each循环
  For-Each循环得加入简化了集合的遍历。

 

增强for循环,语法:for(type 变量名:集合变量名){...}
注意事项:
迭代变量必须在()中定义。
集合变量可以是数组或实现了Iterable接口的集合类。
如:

 

/**
 * 整数相加
 */
public static void add(int x, int ... args){
    int sum = x;
    for(int arg : args){
        sum += arg;
    }
    System.out.println(sum);
}
 
public static void main(String[] args) {
    add(2, 3);
    add(2, 3, 4);
}

 

 

3.自动装包/拆包(Autoboxing/unboxing)
  自动装包/拆包大大方便了基本类型数据和它们包装类地使用。
  自动装包:基本类型自动转为包装类.(int >> Integer)
  自动拆包:包装类自动转为基本类型.(Integer >> int)

4.枚举(Enums)
  JDK1.5加入了一个全新类型的“类”-枚举类型。为此JDK1.5引入了一个新关键字enmu. 我们可以这样来定义一个枚举类型。 
public enum Color
{
   Red,
   White,
   Blue


  然后可以这样来使用Color myColor = Color.Red.
  枚举类型还提供了两个有用的静态方法values()和valueOf(). 我们可以很方便地使用它们,例如
for (Color c : Color.values())
            System.out.println©; 

 

 

参考: http://www.juziku.com/sunlightcs/wiki/229.htm


 5.可变参数(Varargs)
  可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必须是函数声明中的最后一个参数。假设我们要写一个简单的方法打印一些对象,
util.write(obj1);
util.write(obj1,obj2);
util.write(obj1,obj2,obj3);

可变参数:一个方法接受的参数不固定。

特点:
    只能出现在参数列表的最后;
    调用可变参数时,编译器为此可变参数隐含的创建一个数组,在方法体中,可以通过数组的形式访问可变参数。
如:

/**
 * 可变参数
 * @author sunlightcs
 * 2011-3-1
 * http://hi.juziku.com/sunlightcs/
 */
public class VarParam {
 
    /**
     * 整数相加
     */
    public static void add(int x, int ... args){
        int sum = x;
        for(int i=0; i<args.length; i++){
            sum += args[i];
        }
        System.out.println(sum);
    }
     
    public static void main(String[] args) {
        add(2, 3);
        add(2, 3, 4);
    }
 
}

 

 

6.静态导入

静态导入:可以静态导入指定方法或所有方法,如:

 

 

//import static java.lang.Math.max;  //静态导入Math类里的max方法
import static java.lang.Math.*;   //静态导入Math类里的所有方法
 
/**
 * Java静态导入
 * @author sunlightcs
 * 2011-3-1
 * http://hi.juziku.com/sunlightcs/
 */
public class StaticImport {
 
    public static void main(String[] args) {
         
        /**
         * 比较3和6哪个大,使用的是java.lang.Math类里的max方法
         * 原本是要写成Math.max(3, 6)这种形式,但由于导入max方法,
         * 所以就可以写成下面这种形式
         */
        int maxValue = max(3, 6);
         
        /**
         * 求绝对值
         */
        int absValue = abs(3-6);
 
    }
 
}
 

 

你可能感兴趣的:(java)