精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Java開發總出錯 這30個誤區不應再犯

算法&編程學院 ? 來源:網絡整理 ? 作者:工程師3 ? 2018-04-20 14:13 ? 次閱讀

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

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

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

Java開發總出錯 這30 個誤區不應再犯

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

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

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

Java開發總出錯 這30 個誤區不應再犯

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

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

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

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

9.整型數據之間的收縮轉換,僅僅是截斷并丟棄高位,不做任何其他處理。

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

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

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

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

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

15.浮點的相除與求余運算不同與整型的相除與求余運算,當除數為0時,浮點運算不會產生ArithmeticException異常。

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

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

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

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

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

21.究竟選擇哪個方法調用,順序是這樣的:

在第一階段,自動裝箱(拆箱)與可變參數不予考慮,搜索對應形參類型可以匹配實參類型并且形參個數與實參個數相同的方法;

如果在步驟一不存在符合條件的方法,在第二階段,自動裝箱與拆箱將會執行。

如果在步驟二中不存在符合條件的方法,在第三階段,可變參數的方法將會考慮。

如果3個階段都沒有搜索到符合條件的方法,將會產生編譯錯誤。如果如何條件的方法多于一個,將會選擇最明確的方法。最明確的方法定義為:如果A方法的形參列表類型對應的都可以賦值給B方法的形參列表類型,則A方法比B方法明確。如果無法選出最明確的方法,則會產生編譯錯誤。

22.重寫和隱藏的本質區別是:重寫是動態綁定的,根據運行時引用所指向對象的實際類型來決定調用相關類的成員。而隱藏是靜態綁定的,根據編譯時引用的靜態類型來決定調用的相關成員。換句話說,如果子類重寫了父類的方法,當父類的引用指向子類對象時,通過父類的引用調用的是子類方法。如果子類隱藏了父類的方法(成員變量),通過父類的引用調用的仍是父類的方法(成員變量)。

23.構造器是遞歸調用的,子類的構造器會調用父類的構造器,直到調用Object類的構造器為止。

24.構造器沒有創建對象,構造器是使用new創建對象時由系統調用的,用來初始化類的實例成員。從順序上說,先是創建對象,然后再調用構造器的。(構造器并沒有產生新的對象)

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

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

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

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

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2958

    瀏覽量

    104553
收藏 人收藏

    評論

    相關推薦

    再犯錯!走出智能穿戴設備四大誤區

    生活中,很多朋友因為睡前玩手機熬到了半夜、工作沒做完到凌晨等原因,不能保證足夠的睡眠。在使用智能手環后,手環通過提醒監督功能使他們調整了自己的睡眠時間。但即使如此,他們仍然睡不醒、身體疲憊不堪。原來他們是走進了一叫做“我以為我睡夠八小時就夠用”的誤區
    發表于 08-27 09:10 ?1908次閱讀

    Java新手入門的30基本概念

    Java新手入門的30基本概念
    發表于 08-16 20:02

    HarmonyOSAPP開發-JAVA-FullScreenAbility體驗分享

    效果如下二、開發流程第一步 建立項目新建一java的應用項目然后構建完成項目后在jltf_template下new->module選擇phone下的Full Screen模板登錄華為開發
    發表于 08-03 10:07

    嵌入式MCU開發中有哪幾個常見誤區

    淺談嵌入式MCU開發中的三常見誤區原創2017-09-30胡恩偉汽車電子expert成長之路目錄(1)嵌入式MCU與MPU的區分(2)誤區
    發表于 11-01 08:54

    電池使用保養的五誤區

    電池使用保養的五誤區 以下電池使用五大誤區: 1.電
    發表于 11-16 14:12 ?403次閱讀

    電路設計的14誤區

    電路教程相關知識的資料,關于電路設計的14誤區
    發表于 10-10 14:34 ?0次下載

    java開發

    Java開發人員需要花費大量的時間埋頭于Java代碼中,使用各種不同的IDE(Intergrated Development Environment)來開發
    發表于 08-28 10:47 ?9次下載

    Java異常選擇和使用的誤區和經驗總結

    本文著重介紹了 Java 異常選擇和使用中的一些誤區,希望各位讀者能夠熟練掌握異常處理的一些注意點和原則,注意總結和歸納。只有處理好了異常,才能提升開發人員的基本素養,提高系統的健壯性,提升用戶體驗,提高產品的價。
    發表于 11-27 08:54 ?1377次閱讀
    <b class='flag-5'>Java</b>異常選擇和使用的<b class='flag-5'>誤區</b>和經驗總結

    Java開發環境配置(win7_64bit)

    搭建Java開發環境一般需要同時安裝JDK和JRE。 JDK:指Java開發工具包Java Development Kit,
    的頭像 發表于 02-01 15:03 ?3217次閱讀
    <b class='flag-5'>Java</b><b class='flag-5'>開發</b>環境配置(win7_64bit)

    java開發中遇到的難點有哪些_java開發常見的問題及解決辦法

    本文主要介紹的是java開發,首先介紹了java開發的過程,其次介紹了java開發中遇到的難點,
    發表于 04-26 16:49 ?9.4w次閱讀

    名合格的Java開發工程師應該怎樣提升自己

    對于一Java開發來說,編程技能毋庸置疑是很重要的。
    的頭像 發表于 05-08 17:08 ?3547次閱讀

    開發人員必知的八優秀的Java開發工具

    Java是計算機應用程序編程語言,被廣泛用于創建Web應用、服務器處理、用戶端的API開發乃至數據庫等多個領域。今天給大家介紹8優秀的Java開發
    的頭像 發表于 10-08 14:18 ?2243次閱讀

    開發AGV時需要避免的5常見誤區 你知道哪些?

    基于十余年開發經驗,BlueBotics總結的五大常見誤區! 自動導引車(AGV)的開發是一項復雜的業務。雖然一強大的、易于使用的移動機器人可以在未來幾年內推動您的車輛業務,但要產生
    的頭像 發表于 03-27 11:38 ?2154次閱讀

    嵌入式開發-淺談嵌入式MCU開發中的三常見誤區

    淺談嵌入式MCU開發中的三常見誤區原創2017-09-30胡恩偉汽車電子expert成長之路目錄(1)嵌入式MCU與MPU的區分(2)誤區
    發表于 10-26 12:06 ?10次下載
    嵌入式<b class='flag-5'>開發</b>-淺談嵌入式MCU<b class='flag-5'>開發</b>中的三<b class='flag-5'>個</b>常見<b class='flag-5'>誤區</b>

    阿里巴巴Java開發手冊

    Alibaba Java開發手冊,Alibaba Java開發手冊
    發表于 05-24 14:58 ?3次下載