Java高級部分筆記-------Java5.0的新特性

  • 靜態導入

1.1  JDK 1.5 增長的靜態導入語法用於導入類的某個靜態屬性或方法。使用靜態導入能夠簡化程序對類靜態屬性和方法的調用。php

1.2 語法:Import static 包名.類名.靜態屬性|靜態方法|*html

1.3 例如:java

StaticImport.java

package com.itcast.staticimport;
import static java.lang.Math.max;
import static java.lang.Math.abs;
public class StaticImport {
	public static void main(String[] args) {
		System.out.println(max(15,19));
		System.out.println(abs(41));
	}
}
//output:19
         41
//

      

  • 自動拆箱和裝箱

        2.1 JDK5.0的語法容許開發人員把一個基本數據類型直接賦給對應的包裝類變量,或者賦給Object類型的變量,這個過程稱爲自動裝箱.程序員

        2.2 自動拆箱和自動裝箱與之相反,即把包裝類對象直接賦給一個對應的基本類型變量.設計模式

        2.3 典型代碼數組

package com.blog;

public class AutoBox {

	public static void main(String[] args) {
		Integer ibox=3;   //裝箱
		System.out.println(ibox+12);  //拆箱
		Integer i2=13;
		Integer i3=13;
		//-128~127 true
		System.out.println(i2==i3);
		//other false
	}
}
//output:15
         true
~~//

  • 加強for循環

       3.1引入加強for循環的緣由:在JDK之前的版本中,遍歷數組或者集合中的元素,須要先得到數組的長度或者集合的迭代器,比較麻煩.ide

      3.2 所以JDK5.0定義了一種新的語法---加強for循環,以簡化次操做.加強for循環只能用在數組,或實現Iterator接口的集合類上.函數

     3.3 語法格式oop

           for(變量類型 變量  :須要迭代的數組或集合)學習

package com.blog;

public class ForLoop {
	public static void main(String[] args) {
		Integer arrs[] = {1,5,40,84};
		for(Integer arr: arrs){
			System.out.print(arr+",");
		}
	}
}
//output:1,5,40,84,

  • 可變參數

      4.1 測試JDK中具備可變參數的類Arrays.asList()方法。分別傳多個參、傳數組,傳數組又傳參的狀況。

            注意:傳入基本數據類型數組的問題。

       4.2  從JDK 5開始, Java 容許爲方法定義長度可變的參數。語法:

public void foo(int … args){

}

              注意事項:

       4.3 調用可變參數的方法時, 編譯器將自動建立一個數組保存傳遞給方法的可變參數,所以,程序員能夠在方法體中以數組的形式訪問可變參數,可變參數只能處於參數列表的最後, 因此一個方法最多隻能有一個長度可變的參數

package com.blog;
         /**
          * Variable Paramter 
          * foreach
          * @author lisai
          * @version 1.0
          */
public class VariableParamter {
	public static void main(String[] args) {
		System.out.println(add(2,3));
		System.out.println(add(3,5,8,40));
	}
	public static int add(int x,int...paramters){
		int sum=x;
		for(int paramter:paramters){
			sum+=paramter;
		}
		return sum;
	}
}
//output:5
         56

  • 枚舉類

        5.1 爲何須要枚舉?

        一些方法在運行時,它須要的數據不能是任意的,而必須是必定範圍內的值,此類問題在JDK5之前採用自定義帶有枚舉功能的類解決,Java5之後能夠直接使用枚舉予以解決。

        5.2 JDK 5新增的 enum 關鍵字用於定義一個枚舉類。

        5.3  枚舉類具備以下特性:

            枚舉類也是一種特殊形式的Java類。

            枚舉類中聲明的每個枚舉值表明枚舉類的一個實例對象。

            與java中的普通類同樣,在聲明枚舉類時,也能夠聲明屬性、方法和構造函數,但枚舉類的構造函數必須爲私有                的(這點不難理解)。

            枚舉類也能夠實現接口、或繼承抽象類。

            JDK5中擴展了swith語句,它除了能夠接收int, byte, char, short外,還能夠接收一個枚舉類型。

            若枚舉類只有一個枚舉值,則能夠看成單態設計模式使用

       5.4 在本身看來枚舉對象就至關於public static final聲明的變量

package com.itcast.enums;
public class EnumTest {
	public static void main(String[] args) {
		WeekDay weekDay=WeekDay.MonDay;
		System.out.println(weekDay.next());
	}
}
abstract class  WeekDay{
	private WeekDay(){}
	public static final WeekDay SUNDAY=new WeekDay(){

		@Override
		public WeekDay next() {
			return MonDay;
		}
		
	}; 
	public static final WeekDay MonDay=new WeekDay(){

		@Override
		public WeekDay next() {
			return SUNDAY;
		}	
	}; 
	public abstract WeekDay next();
	@Override
	public String toString(){
		return this==SUNDAY?"SUNDAY":"MonDay";
	}
}
//帶構造方法的枚舉類
enum WeekDayEnum{
	SUNDAY(1),MONDAY;
	//構造方法必須私有
    private WeekDayEnum(){
	}
    private WeekDayEnum(int length){
    	
    }
}
//output:SUNDAY

  • 註解

註解(Annotation): @SuppressWarnings("deprecation")
                   @Override
       元註解:@Retention(RetentionPolicy.RUNTIME)
             @Target({ElementType.METHOD,ElementType.TYPE})
       註解生命週期階段存在:Java源文件----->class字節碼文件----->內存(運行時註解)
                   @Retention(RetentionPolicy.SOURCE)
                   @Retention(RetentionPolicy.CLASS)
                   @Retention(RetentionPolicy.RUNTIME)
                   Default存在class字節碼文件
       爲註解添加屬性:
                   @Retention(RetentionPolicy.RUNTIME)
                   @Target({ElementType.METHOD,ElementType.TYPE})---做用在類,方法等上.
                   public @interface ItcastAnnotation {
	                     String color();
                   }
                   @ItcastAnnotation(color="藍色")

package com.itcast.comment;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface ItcastAnnotation {
	String color();
}

package com.itcast.comment;
@ItcastAnnotation(color="藍色")
public class AnnotationTest {
	@SuppressWarnings("deprecation")
	public static void main(String[] args) {
		System.runFinalizersOnExit(true);
		if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){
			ItcastAnnotation annotation=AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
			System.out.println(annotation);
			System.out.println(annotation.color());
		}
	}
}

註解更多詳細知識點:http://www.ibm.com/developerworks/cn/java/j-annotate1/

在學習Java高級部分,首先學習了Java5.0的新特性.雖然Java的更高級版本(8.0)出現,可是我以爲這些基礎的知識是頗有用的.這些知識都是在開發中頻繁用到的.

  JDK 6.0的新添特性:http://bbs.tech.ccidnet.com/read.php?tid=312315&fpage=0&toread=&page=1

  相關API:http://blog.csdn.net/lanniao1/archive/2007/08/25/1759047.aspx

  JDK 7.0的新特性的相關介紹:http://www.360doc.com/content/12/1013/23/820209_241321372.shtml

最後,仍是但願本身英文慢慢地變好,那樣的話就能夠直接讀取Java官網的API來發現Java8新特性.----------------

相關文章
相關標籤/搜索