最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Java5、Java6、Java7的新特性

 更新時(shí)間:2017年04月14日 16:57:24   投稿:wbb  
本編文章詳細(xì)介紹了Java5、Java6、Java7的新特性,需要的朋友可以參考下

Java5:

1、泛型 Generics:

引用泛型之后,允許指定集合里元素的類型,免去了強(qiáng)制類型轉(zhuǎn)換,并且能在編譯時(shí)刻進(jìn)行類型檢查的好處。Parameterized Type作為參數(shù)和返回值,Generic是vararg、annotation、enumeration、collection的基石。

A、類型安全

拋棄List、Map,使用List、Map給它們添加元素或者使用Iterator遍歷時(shí),編譯期就可以給你檢查出類型錯(cuò)誤

B、方法參數(shù)和返回值加上了Type

拋棄List、Map,使用List、Map

C、不需要類型轉(zhuǎn)換

List list=new ArrayList();
String str=list.get(i);

D、類型通配符“?”

假設(shè)一個(gè)打印List中元素的方法printList,我們希望任何類型T的List都可以被打?。?br />

代碼:

public void printList(List list,PrintStream out)throws IOException{
for(Iterator i=list.iterator();i.hasNext();){
System.out.println(i.next.toString());
}
}

如果通配符?讓我們的參數(shù)類型過(guò)于廣泛,我們可以把List、Iterator 修改為

List、Iterator限制一下它。

2、枚舉類型 Enumeration:

3、自動(dòng)裝箱拆箱(自動(dòng)類型包裝和解包)autoboxing & unboxing:

  簡(jiǎn)單的說(shuō)是類型自動(dòng)轉(zhuǎn)換。

自動(dòng)裝包:基本類型自動(dòng)轉(zhuǎn)為包裝類(int ——Integer)

自動(dòng)拆包:包裝類自動(dòng)轉(zhuǎn)為基本類型(Integer——int)

4、可變參數(shù)varargs(varargs number of arguments)

參數(shù)類型相同時(shí),把重載函數(shù)合并到一起了。
如:

public void test(object... objs){
for(Object obj:objs){
System.out.println(obj);
}
}

5、Annotations 它是java中的metadata

A、Tiger中預(yù)定義的三種標(biāo)準(zhǔn)annotation

a 、Override

指出某個(gè)method覆蓋了superclass 的method當(dāng)你要覆蓋的方法名拼寫(xiě)錯(cuò)時(shí)編譯不通過(guò)

b、Deprecated

指出某個(gè)method或element類型的使用是被阻止的,子類將不能覆蓋該方法

c、SupressWarnings

關(guān)閉class、method、field、variable 初始化的編譯期警告,比如:List沒(méi)有使用 Generic,則@SuppressWarnings("unchecked")去掉編譯期警告。

B、自定義annotation

public @interface Marked{}

C、meta-annotation

或者說(shuō)annotation的annotation

四種標(biāo)準(zhǔn)的meta-annotation全部定義在java.lang.annotaion包中:

a, Target

指定所定義的annotation可以用在哪些程序單元上

如果Target沒(méi)有指定,則表示該annotation可以使用在任意程序單元上

代碼

 @Target({ElementType.ANNOTATION_TYPE, 
       ElementType.CONSTRUCTOR, 
       ElementType.FIELD, 
       ElementType.LOCAL_VARIABLE, 
       ElementType.METHOD, 
       ElementType.PACKAGE, 
       ElementType.PARAMETER, 
       ElementType.TYPE}) 
  public @interface TODO {} 

b, Retention

指出Java編譯期如何對(duì)待annotation

annotation可以被編譯期丟掉,或者保留在編譯過(guò)的class文件中

在annotation被保留時(shí),它也指定是否會(huì)在JVM加載class時(shí)讀取該annotation

代碼

 @Retention(RetentionPolicy.SOURCE) // Annotation會(huì)被編譯期丟棄 
  public @interface TODO1 {} 
  @Retention(RetentionPolicy.CLASS)  // Annotation保留在class文件中,但會(huì)被JVM忽略 
  public @interface TODO2 {} 
  @Retention(RetentionPolicy.RUNTIME) // Annotation保留在class文件中且會(huì)被JVM讀取 
  public @interface TODO3 {} 

c, Documented

指出被定義的annotation被視為所熟悉的程序單元的公開(kāi)API之一

被@Documented標(biāo)注的annotation會(huì)在javadoc中顯示,這在annotation對(duì)它標(biāo)注的元素被客戶端使用時(shí)有影響時(shí)起作用

d, Inherited

該meta-annotation應(yīng)用于目標(biāo)為class的annotation類型上,被此annotattion標(biāo)注的class會(huì)自動(dòng)繼承父類的annotation

D, Annotation的反射

我們發(fā)現(xiàn)java.lang.Class有許多與Annotation的反射相關(guān)的方法,如getAnnotations、isAnnotationpresent

我們可以利用Annotation反射來(lái)做許多事情,比如自定義Annotation來(lái)做Model對(duì)象驗(yàn)證

代碼

 @Retention(RetentionPolicy.RUNTIME) 
  @Target({ ElementType.FIELD, ElementType.METHOD }) 
  public @interface RejectEmpty { 
    /** hint title used in error message */ 
    String value() default ""; 
  }    
  @Retention(RetentionPolicy.RUNTIME) 
  @Target( { ElementType.FIELD, ElementType.METHOD }) 
  public @interface AcceptInt { 
    int min() default Integer.MIN_VALUE; 
    int max() default Integer.MAX_VALUE; 
    String hint() default ""; 
  } 

使用@RejectEmpty和@AcceptInt標(biāo)注我們的Model的field,然后利用反射來(lái)做Model驗(yàn)證

6、新的迭代語(yǔ)句(for(int n:numbers))

7、靜態(tài)導(dǎo)入(import static )

8、新的格式化方法(java.util.Formatter)

formatter.format("Remaining account balance: $%.2f", balance);

9、新的線程模型和并發(fā)庫(kù)Thread Framework

HashMap的替代者ConcurrentHashMap和ArrayList的替代者CopyOnWriteArrayList

在大并發(fā)量讀取時(shí)采用java.util.concurrent包里的一些類會(huì)讓大家滿意BlockingQueue、Callable、Executor、Semaphore... 

Java6:

1、引入了一個(gè)支持腳本引擎的新框架

2、UI的增強(qiáng)

3、對(duì)WebService支持的增強(qiáng)(JAX-WS2.0和JAXB2.0)

4、一系列新的安全相關(guān)的增強(qiáng)

5、JDBC4.0

6、Compiler API

7、通用的Annotations支持

 Java7:

1,switch中可以使用字串了

String s = "test"; 
switch (s) { 
case "test" : 
System.out.println("test"); 
case "test1" : 
System.out.println("test1"); 
break ; 
default : 
System.out.println("break"); 
break ; 
}

2.運(yùn)用List tempList = new ArrayList<>(); 即泛型實(shí)例化類型自動(dòng)推斷

3.語(yǔ)法上支持集合,而不一定是數(shù)組

final List piDigits = [ 1,2,3,4,5,8 ];

4.新增一些取環(huán)境信息的工具方法

File System.getJavaIoTempDir() // IO臨時(shí)文件夾
File System.getJavaHomeDir() // JRE的安裝目錄
File System.getUserHomeDir() // 當(dāng)前用戶目錄
File System.getUserDir() // 啟動(dòng)java進(jìn)程時(shí)所在的目錄5

5.Boolean類型反轉(zhuǎn),空指針安全,參與位運(yùn)算

Boolean Booleans.negate(Boolean booleanObj)
True => False , False => True, Null => Null
boolean Booleans.and(boolean[] array)
boolean Booleans.or(boolean[] array)
boolean Booleans.xor(boolean[] array)
boolean Booleans.and(Boolean[] array)
boolean Booleans.or(Boolean[] array)
boolean Booleans.xor(Boolean[] array)

6.兩個(gè)char間的equals

boolean Character.equalsIgnoreCase(char ch1, char ch2)

7.安全的加減乘除

int Math.safeToInt(long value)
int Math.safeNegate(int value)
long Math.safeSubtract(long value1, int value2)
long Math.safeSubtract(long value1, long value2)
int Math.safeMultiply(int value1, int value2)
long Math.safeMultiply(long value1, int value2)
long Math.safeMultiply(long value1, long value2)
long Math.safeNegate(long value)
int Math.safeAdd(int value1, int value2)
long Math.safeAdd(long value1, int value2)
long Math.safeAdd(long value1, long value2)
int Math.safeSubtract(int value1, int value2)

8.map集合支持并發(fā)請(qǐng)求,且可以寫(xiě)成 Map map = {name:"xxx",age:18};

希望本篇文章可以幫到需要的朋友

相關(guān)文章

  • 解析Java線程編程中的線程安全與synchronized的使用

    解析Java線程編程中的線程安全與synchronized的使用

    這篇文章主要介紹了Java線程編程中的線程安全與synchronized的使用,synchronized多線程使用時(shí)一定要注意線程之間的沖突問(wèn)題,需要的朋友可以參考下
    2015-12-12
  • springboot配置Hikari連接池方式

    springboot配置Hikari連接池方式

    本文介紹了在Springboot中配置Hikari連接池的具體參數(shù)和設(shè)置,涵蓋了autoCommit, connectionTimeout, idleTimeout, maxLifetime, minimumIdle, maximumPoolSize等關(guān)鍵配置項(xiàng),并提供了它們的默認(rèn)值、描述和條件下的重置規(guī)則
    2024-09-09
  • 通俗易懂學(xué)習(xí)java并發(fā)工具類-Semaphore,Exchanger

    通俗易懂學(xué)習(xí)java并發(fā)工具類-Semaphore,Exchanger

    這篇文章主要介紹了java并發(fā)工具類-Semaphore,Exchanger,java并發(fā)工具類有很多,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面小編帶大家來(lái)一起學(xué)習(xí)一下吧
    2019-06-06
  • java?socket實(shí)現(xiàn)局域網(wǎng)聊天

    java?socket實(shí)現(xiàn)局域網(wǎng)聊天

    這篇文章主要為大家詳細(xì)介紹了java?socket實(shí)現(xiàn)局域網(wǎng)聊天,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Jsoup解析HTML實(shí)例及文檔方法詳解

    Jsoup解析HTML實(shí)例及文檔方法詳解

    這篇文章主要介紹了Jsoup如何解析一個(gè)HTML文檔、從文件加載文檔、從URL加載Document等方法,對(duì)Jsoup常用方法做了詳細(xì)講解,最近提供了一個(gè)示例供大家參考 使用DOM方法來(lái)遍歷一個(gè)文檔 從元素抽取屬性,文本和HTML 獲取所有鏈接
    2013-11-11
  • 如何解決Eclipse找不到或無(wú)法加載主類問(wèn)題

    如何解決Eclipse找不到或無(wú)法加載主類問(wèn)題

    這篇文章主要介紹了如何解決Eclipse找不到或無(wú)法加載主類問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • java HashMap的keyset實(shí)例

    java HashMap的keyset實(shí)例

    簡(jiǎn)單地說(shuō),在keyset方法返回的set上做修改會(huì)改變?cè)瓉?lái)hashmap,這也許不是你想要的,于是形成一個(gè)隱藏的bug
    2013-04-04
  • Java數(shù)據(jù)結(jié)構(gòu)之鏈表的增刪查改詳解

    Java數(shù)據(jù)結(jié)構(gòu)之鏈表的增刪查改詳解

    今天帶大家來(lái)學(xué)習(xí)Java鏈表的增刪改查的相關(guān)知識(shí),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)Java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • 使用Sentinel實(shí)現(xiàn)流控和服務(wù)降級(jí)的代碼示例

    使用Sentinel實(shí)現(xiàn)流控和服務(wù)降級(jí)的代碼示例

    Sentinel是面向分布式、多語(yǔ)言異構(gòu)化服務(wù)架構(gòu)的流量治理組件,本文將詳細(xì)為大家介紹如何使用Sentinel實(shí)現(xiàn)流控和服務(wù)降級(jí),文中有相關(guān)的代碼示例,需要的朋友可以參考下
    2023-05-05
  • SpringSecurity整合Jwt過(guò)程圖解

    SpringSecurity整合Jwt過(guò)程圖解

    這篇文章主要介紹了SpringSecurity整合Jwt過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01

最新評(píng)論

呼图壁县| 林西县| 海门市| 盖州市| 泊头市| 娄底市| 合川市| 楚雄市| 张掖市| 昌吉市| 台中市| 时尚| 伊金霍洛旗| 阿拉善盟| 田东县| 遵义市| 施秉县| 苗栗县| 樟树市| 阿克苏市| 宜兰市| 宣恩县| 鹤峰县| 新巴尔虎左旗| 密山市| 凤冈县| 达尔| 海口市| 宿州市| 磐石市| 嘉义市| 嘉善县| 务川| 友谊县| 临洮县| 株洲市| 承德县| 巨野县| 阜新| 如皋市| 福建省|