java1.5新增语法

1.          泛性编程
         C 经过模板技术能够指定集合的元素类型,而Java在1.5以前一直没有相对应的功能。一个集合能够听任何类型的对象,相应地从集合里面拿对象的时 候咱们也不得不对他们进行强制得类型转换。猛虎引入了泛型。例子以下:
ArrayList<String> list = new ArrayList<String>();
list.add(new String("Hello!"));
System.out.println(list.get(0));
2.          自动装箱/拆箱
         Java中常常须要在原始数据类型和它们的包装类之间转换,尤为是将数据放入Collection容器中和取出来时。为了减小这些重复代码,JDK 5.0添加了自动装箱/解箱操做,今后以后,基本上能够将原始数据类型看成对象来操做了。
         自动装箱:指开发人员能够把一个基本数据类型直接赋给对应的包装类。
         自动拆箱:指开发人员能够把一个包装类对象直接赋给对应的基本数据类型。
        例:public void test(){
                      Integer i = 1000; //装箱
                      int c = i; //拆箱
                       //典型的应用案例
                      List list = new ArrayList();
                      list.add(12); //装箱
                      int temp = (Integer)list.get(0); //拆箱
                }
3.          加强的循环结构(for-each循环)
         引入加强for循环的缘由:在JDK5之前的版本中,遍历数组或集合中的元素,需先得到数组的长度或集合的迭代器,比较麻烦!加入这种循环方式也是为了简化一些代码开发,尤为是对Collection容器的遍历,之前都须要获得Iterator,而后调用next()获得下一个对象,调用hasNext()判断是否还有,要不停写这种重复的代码,用foreach则很简单。所以JDK5中定义了一种新的语法——加强foreach循环,以简化此类操做。加强for循环只能用在数组、或实现Iterable接口的集合类上, 语法格式:  
for(变量类型 变量 :需迭代的数组或集合){具体代码 }                                         
例: int data[] = { 1, 2, 3, 4, 5 };
         for(int j : data)
               System.out.println(j);
4.          枚举类型
         Java添加了对枚举类型的支持,使用enum关键字进行定义。下面是一个例子:
                  public enum Meal {BREAKFAST, LUNCH, SUPPER};
              public static void main( String[] args ) {
                   Meal m = Meal.BREAKFAST;
                   System.out.println( m );                         
                   }
    其中定义的每个常量都是Meal的一个实例。能够看到枚举类型的定义很是像一个类,能够有方法,能够有构造函数,不过构造函数不能是public或者protected的;此外实例必须在一开始就定义。另外就是enum不能被继承,由于事实上定义了一个enum后,编译器会自动生成一个继承了java.lang.Enum的同名的类,而Java是不支持多重继承的,因此定义的enum就不能被继承了,这一点在某些时候带来了一些限制,好比想重用代码来扩展enum时。此外,注意上面定义中的语法,各个实例间用逗号分隔,实例所有结束后用分号。
    枚举类型还定义了一些方法:toString(), values()和ordinal()等。
    enum还支持静态导入,支持用在switch语句中。
5.          静态导入
         静态导入很是简单,就是将一个类的静态变量或者方法导入,这样在引用时就不须要再写类名了,减小了代码输入的工做量。例子以下:
import static java.lang.System.out;
public class StaticImport {   
     public static void main( String[] args ) {
         out.println( "Good" );
     }
}
代码中用了最经常使用的输出语句,原来须要写System.out.println(),如今将out静态导入,则只需写out.println()
一般导入的语句也能够写成import static java.lang.System.*来将该类中的全部静态变量和方法都导入。能够看到静态导入是很是简单的,只需记住虽然该特性通常称为“静态导入(static import)”,写代码时却要写成“import static”。
6.          可变参数列表
         从C中借鉴来的功能,若是方法想要接受任意数目的参数的话,就能够用,获得的参数则用foreach语法一个一个读出来。之前则可能须要用一大堆的重载方法。形式如:
 void argtest(Object ... args) {
    for(int i = 0; i < args.length; i++)
        System.out.println(i);
 }
 例子以下:
  public class Test {   
      public static void test( int...values ) {
          System.out.println( values.length );
          for ( int i : values ) {
              System.out.println( i );
          }
      }   
      public static void main( String[] args ) {
          test( 1 );
         test( 1, 2 );
         test( 1, 2, 3 );
     }
}上面代码中能够看到,可变参数列表还有个属性是length。
而后咱们能够这样调用这个函数:
argtest(1);
argtest(1, 2, 4, 5, 6);
 
7.          格式化输出
System.out.printf("This is a test: %4.2f\n", 123.123);
这就会打印出:This is a test: 123.12
8.          从终端读取数据
         刚开始接触Java 的时候,我怎么也不能用Java 在终端像C同样方便的读取数据。要从终端读取一个整数我之前是这么弄的:
try {
    BufferedReader reader = new BufferedReader(new
              InputStreamReader(System.in));
    int i = Integer.parseInt(reader.readLine());
} catch(IOException e) { }
如今好了,Java 里面引入了一个Scanner(),能够方便的从终端读取数据:
public class ScannerExample{
         public static void main(String[] args){
                   Scanner read = new Scanner(System.in);
                   int i = read.nextInt();
                   System.out.println(“输入的i=”+i);
         }
}
相关文章
相关标签/搜索