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

java開發(fā)中的誤區(qū)和細節(jié)整理

 更新時間:2018年04月22日 09:15:57   作者:張凱  
這篇文章給大家整理了關于JAVA開發(fā)中的細節(jié)以及經(jīng)常進入的誤區(qū)整理,希望我們整理的內(nèi)容能夠給大家提供到幫助。

1、在Java中,沒有goto語句。因為大量使用goto語句會降低程序的可讀性和可維護性,所以Java語言取消了goto的使用。同時,為了避免程序員自行使用goto所帶來的混亂,Java語言仍將goto定義為一個關鍵字,但是沒有定義任何語法,故稱為“保留字”。

2 true、false和null在IDE中雖然以不同的顏色顯示,但是并不是關鍵字,而是“字面常量”,就和String類型的abc一樣。

3 定義名稱時盡量避免使用$,因為編譯器在對.java文件進行編譯的時候,會將”$”編譯成頂層類型與底層類型的連接符。見下例:

在編譯(javac Test3.java)這段代碼的時候,編譯器會報以下錯誤:Test.java:12: 錯誤: 類重復: com.javastack.Test.Outer.Inner class Inner{ ^

4 Unicode轉(zhuǎn)義字符處理的非常早,在解析程序之前。例如:

在程序中出現(xiàn)這兩行代碼編譯報錯。這兩個Unicode碼分別表示”換行”和”回車”,所以,在編譯器編譯的時候,代碼是這樣的:

5 Unicode碼使用16位字符編碼,在Java中用char類型來表示。現(xiàn)在Unicode已經(jīng)擴展到一百萬個字符,超出16位限制的成為增補字符。所有增補字符都不能用字符常量來表示。

6 當short,byte,char參加運算時,結(jié)果為int型,而非與較高的類型相同。如果變量是byte,short,byte類型,當對其賦予編譯時期的常量,而該常量又沒有超過變量的取值范圍時,編譯器就可以進行隱式的收縮轉(zhuǎn)換。這種隱式的收縮轉(zhuǎn)換是安全的,因為該收縮轉(zhuǎn)換只適用于變量的賦值,而不適用于方法調(diào)用語句,即不適用于方法調(diào)用時的參數(shù)傳遞。(詳見java中默認類型轉(zhuǎn)換的小問題)

7 注意char類型,這是一個無符號類型。因此,char與short或char與byte之間的轉(zhuǎn)換必須顯示地使用類型轉(zhuǎn)換。 從byte到char的轉(zhuǎn)換為擴展收縮轉(zhuǎn)換,該轉(zhuǎn)換比較特殊,即先將byte擴展轉(zhuǎn)換到int,然后再收縮到char。

8 在整型數(shù)據(jù)間的擴展轉(zhuǎn)換中,如果操作數(shù)是char類型(無符號類型),則進行無符號擴展,擴展位為0.如果操作數(shù)是byte,short或int(有符號類型),則進行有符號擴展,擴展位為該變量的符號位。

9 整型數(shù)據(jù)之間的收縮轉(zhuǎn)換,僅僅是截斷并丟棄高位,不做任何其他處理。

10 0.1+0.2不等于0.3.System.out.println((double)0.1+(double)0.2);這條語句的輸出結(jié)果是0.30000000000000004。因為計算機使用二進制來存儲數(shù)據(jù),而很多小數(shù)都不能夠準確地使用二進制來表示(事實上,大多數(shù)地小數(shù)都是近似的),就像使用十進制小數(shù)不能準確地表示1/3這樣地分數(shù)一樣。大多數(shù)地浮點型,在計算機中只是近似地存儲其值,而不像整型那樣準確地存儲。又例,這是一個死循環(huán):for(float f = 10.1f;f != 11;f+=0.1f){}

11 float類型可以保留7~8個有效數(shù)字,而double類型可以保留15~16個有效數(shù)字,因而當int類型或long類型數(shù)值多于double或float地有效數(shù)字時,該值的一些最低有效位就會丟失,從而造成精度丟失,這時,就會采用IEEE754最近舍入模式,提取與該整型值最接近的浮點值。盡管整型向浮點型的轉(zhuǎn)換屬于擴展轉(zhuǎn)換,但當數(shù)值很大或很?。ń^對值很大)時,就會產(chǎn)生一定的精度丟失。

12 i+++j如何計算?(這個問題在C/C++)中討論是沒有多大意義的,因為C/C++依賴于實現(xiàn)的硬件結(jié)構(gòu),不同的環(huán)境結(jié)果也會不同。不過在Java中,這個結(jié)果是固定的,不受其運行的硬件環(huán)境與平臺的影響) 答:根據(jù)貪心規(guī)則,前置++優(yōu)于后置++,結(jié)果是(i++)+j

13 i++和++i其實都是先+1,再賦值。++i,沒什么好說的;i++,以j=i++;為例在底層的實現(xiàn)是:temp = i;i = i + 1; j = temp; 所以,i=15;i=i++;這個表達式的結(jié)果是15.(因為加一之后又執(zhí)行了一次賦值,從16變回15)

14 +0與-0在浮點類型變量存儲中,符號位是不同的。當-0和+0參與浮點類型的相關運算(例如相除與求余運算)時,可以產(chǎn)生不同的結(jié)果。

15 浮點的相除與求余運算不同與整型的相除與求余運算,當除數(shù)為0時,浮點運算不會產(chǎn)生ArithmeticException異常。

16 String類是非可變類,其對象一旦創(chuàng)建,就不可銷毀。String類那些看似修改字符序列的方法實際上都是返回新創(chuàng)建的String對象,而不是修改自身對象。

17 由于String對象是不可改變的,因此具有線程安全性,可以自由地實現(xiàn)共享。

18 在String類內(nèi)部,是使用一個字符數(shù)組(char[])來維護字符序列的。String的最大長度也就是字符數(shù)組的最大長度,理論上最大長度為int類型的最大值,即2147483647.在實際中,一般可獲取的最大值小于理論最大值。

19 main()方法在表現(xiàn)行為上,與其他方法基本相同,可以重載,由其他方法調(diào)用,繼承,隱藏,也可以拋出異常,帶有類型參數(shù)。我們也可以在一個程序中通過反射來調(diào)用main方法(或其他方法)。

20 當兩個或多個方法的名稱相同,而參數(shù)列表不同時,這幾個方法就構(gòu)成了重載。重載方法可以根據(jù)參數(shù)列表對應的類型與參數(shù)的個數(shù)來區(qū)分,但是,參數(shù)的名稱、方法的返回類型,方法的異常列表與類型參數(shù)不能作為區(qū)分重載方法的條件。

21 究竟選擇哪個方法調(diào)用,順序是這樣的:

  • 在第一階段,自動裝箱(拆箱)與可變參數(shù)不予考慮,搜索對應形參類型可以匹配實參類型并且形參個數(shù)與實參個數(shù)相同的方法;
  • 如果在步驟一不存在符合條件的方法,在第二階段,自動裝箱與拆箱將會執(zhí)行。
  • 如果在步驟二中不存在符合條件的方法,在第三階段,可變參數(shù)的方法將會考慮。
  • 如果3個階段都沒有搜索到符合條件的方法,將會產(chǎn)生編譯錯誤。如果如何條件的方法多于一個,將會選擇最明確的方法。最明確的方法定義為:如果A方法的形參列表類型對應的都可以賦值給B方法的形參列表類型,則A方法比B方法明確。如果無法選出最明確的方法,則會產(chǎn)生編譯錯誤。

22 重寫和隱藏的本質(zhì)區(qū)別是:重寫是動態(tài)綁定的,根據(jù)運行時引用所指向?qū)ο蟮膶嶋H類型來決定調(diào)用相關類的成員。而隱藏是靜態(tài)綁定的,根據(jù)編譯時引用的靜態(tài)類型來決定調(diào)用的相關成員。換句話說,如果子類重寫了父類的方法,當父類的引用指向子類對象時,通過父類的引用調(diào)用的是子類方法。如果子類隱藏了父類的方法(成員變量),通過父類的引用調(diào)用的仍是父類的方法(成員變量)。

23 構(gòu)造器是遞歸調(diào)用的,子類的構(gòu)造器會調(diào)用父類的構(gòu)造器,直到調(diào)用Object類的構(gòu)造器為止。

24 構(gòu)造器沒有創(chuàng)建對象,構(gòu)造器是使用new創(chuàng)建對象時由系統(tǒng)調(diào)用的,用來初始化類的實例成員。從順序上說,先是創(chuàng)建對象,然后再調(diào)用構(gòu)造器的。(構(gòu)造器并沒有產(chǎn)生新的對象)

25 默認的構(gòu)造器不為空,該構(gòu)造器會調(diào)用父類的無參構(gòu)造器,并可能執(zhí)行實例成員變量的初始化。所以,默認的構(gòu)造器至少調(diào)用了父類的構(gòu)造器,它做的工作還可能更多,包括實例變量聲明初始化與實例初始化塊,都是在構(gòu)造器中執(zhí)行的。

26 當==或!=運算符的兩個操作數(shù)的類型一個是基本數(shù)據(jù)類型,另一個是包裝類引用類型時,將引用類型拆箱轉(zhuǎn)換為基本數(shù)據(jù)類型,然后比較兩個基本數(shù)據(jù)類型的值是否相等。

27 在Java中,數(shù)組也是類,數(shù)組聲明的引用變量指向數(shù)組類型的對象。所有的數(shù)組都繼承Object類,并且實現(xiàn)了java.lang.Cloneable與java.io.Serializable接口。數(shù)組的成員包括變量length(隱式存在)與從Object類繼承的成員。Cloneable與Serializable是兩個標記的接口,這兩個接口中沒有顯式聲明任何成員。

28 接口是完全抽象的設計,不能實例化。使A用new方式創(chuàng)建的借口類型,實際上是創(chuàng)建了一個匿名類,該匿名類實現(xiàn)了接口類型。

29 如果兩個接口聲明了相同的變量x,則當某接口同時繼承這兩個接口,或者某類同時實現(xiàn)這兩個接口時,通過簡單名稱訪問會產(chǎn)生編譯錯誤。

30 如果兩個接口中聲明了相同名稱的方法m,并且兩個方法沒有構(gòu)成重載,則當某接口能夠同時繼承這兩個接口,或者某類能夠同時繼承這兩個接口時,必須存在一種方法簽名,使得該簽名同時為兩個m方法簽名的子簽名,并且在方法的返回類型上,必須存在一種類型,使得該類型同時為兩個m方法返回類型的可替換類型。

相關文章

  • javac final變量未賦值檢測案例講解

    javac final變量未賦值檢測案例講解

    這篇文章主要介紹了javac final變量未賦值檢測案例講解,通過本文,我們可以知道Eclipse中報如下錯誤:The blank final field b may not have been
    initialized. 是在Flow階段由AssignAnalyzer檢測出來的,需要的朋友可以參考下
    2022-12-12
  • Java8中List轉(zhuǎn)Map(Collectors.toMap) 的技巧分享

    Java8中List轉(zhuǎn)Map(Collectors.toMap) 的技巧分享

    在最近的工作開發(fā)之中,慢慢習慣了很多Java8中的Stream的用法,很方便而且也可以并行的去執(zhí)行這個流,這篇文章主要給大家介紹了關于Java8中List轉(zhuǎn)Map(Collectors.toMap) 的相關資料,需要的朋友可以參考下
    2021-07-07
  • idea中使用(Revert Commit)圖解

    idea中使用(Revert Commit)圖解

    這篇文章主要介紹了idea中使用(Revert Commit)圖解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java實現(xiàn)的樸素貝葉斯算法示例

    Java實現(xiàn)的樸素貝葉斯算法示例

    這篇文章主要介紹了Java實現(xiàn)的樸素貝葉斯算法,結(jié)合實例形式分析了基于java的樸素貝葉斯算法定義及樣本數(shù)據(jù)訓練操作相關使用技巧,需要的朋友可以參考下
    2018-06-06
  • Spring中的ClassPathXmlApplicationContext源碼詳解

    Spring中的ClassPathXmlApplicationContext源碼詳解

    這篇文章主要介紹了Spring中的ClassPathXmlApplicationContext源碼詳解,ApplicationContext的主要實現(xiàn)類是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,前者默認從類路徑加載配置文件,后者默認從文件系統(tǒng)中裝載配置文件,需要的朋友可以參考下
    2023-12-12
  • 深入理解JAVA核心:揭秘反射機制的奧秘

    深入理解JAVA核心:揭秘反射機制的奧秘

    歡迎來到JAVA反射機制指南!想要了解如何在JAVA中實現(xiàn)靈活的編程技巧嗎?本指南將帶你揭開JAVA反射機制的神秘面紗,讓你的編程世界更加精彩!趕緊跟我一起來探索吧!
    2024-02-02
  • Java作用域、訪問修飾符詳解

    Java作用域、訪問修飾符詳解

    文章詳細解釋了Java中的作用域和訪問修飾符,包括變量和方法的作用域,以及四種訪問修飾符(public、protected、默認、private)的使用規(guī)則和可見性范圍
    2025-02-02
  • spring mvc中的@PathVariable獲得請求url中的動態(tài)參數(shù)

    spring mvc中的@PathVariable獲得請求url中的動態(tài)參數(shù)

    本文主要介紹了spring mvc中的@PathVariable獲得請求url中的動態(tài)參數(shù)的代碼。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • JavaWeb基礎教程之Java基礎加強版

    JavaWeb基礎教程之Java基礎加強版

    這篇文章主要介紹了JavaWeb基礎教程之Java基礎加強版的相關資料,需要的朋友可以參考下
    2016-07-07
  • Java中Jackson的序列化與反序列化詳解

    Java中Jackson的序列化與反序列化詳解

    這篇文章主要介紹了Java中Jackson的序列化與反序列化詳解,Jackson被認為是"Java JSON庫"或"Java最好的JSON解析器",Jackson 還是一套用于 Java(和 JVM 平臺)的數(shù)據(jù)處理工具,需要的朋友可以參考下
    2024-01-01

最新評論

乌苏市| 进贤县| 拜泉县| 长沙市| 济宁市| 长岛县| 武邑县| 华坪县| 莲花县| 古交市| 广宁县| 阳西县| 肃北| 玉龙| 上杭县| 永登县| 新蔡县| 陇川县| 闻喜县| 连江县| 游戏| 新巴尔虎左旗| 永善县| 津南区| 营口市| 莆田市| 马山县| 化州市| 武山县| 义乌市| 庆元县| 丽水市| 舞钢市| 乳山市| 西平县| 禹城市| 南陵县| 砀山县| 本溪市| 福清市| 十堰市|