java編碼規範,java編碼規範指南

本文目錄一覽:

Java中變數和常量之間的區別?

在程序中存在大量的數據來代表程序的狀態,其中有些數據在程序的運行過程中值會發生改變而有些不能發生改變,這些數據在程序中分別被叫做變數和常量。下面小編跟大家講講Java中變數和常量之間的區別,一起來看看。

Java中變數和常量區別

常量:其值不變即為常量。

語法:

數據類型 常量名 = 值;

double PI = 3.14;

備註:

一般默認常量名大寫。

變數與常量之間關係(量間關係)

先來一個簡單的實例,好了解 Java 里變數與常量之間的關係。

下面的程序里聲明了兩種 Java 經常使用到的變數,分別為整型變數 num 與字元變數 ch。為它們賦值後,再把它們的值分別顯示在控制台上:

下面的程序聲明了兩個變數,一個是整型,一個是字元型

輸出結果:

3 是整數!

z 是字元!

說明:

聲明了兩種不同類型的變數 num 與 ch,並分別將常量 3 與字元「z」賦值給這兩個變數,最後再將它們顯示在顯示器上。聲明一個變數時,編譯程序會在內存里開闢一塊足以容納此變數的內存空間給它。不管變數的值如何改變,都永遠使用相同的內存空間。因此,善用變數將會是一種節省內存的方式。

常量是不同於變數的一種類型,它的值是固定的,例如整數常量、字元串常量。通常給變數賦值時,會將常量賦值給它,在程序 TestJava 中,第 6 行 num 是整型變數, 而 3 則是常量。 此行的作用是聲明 num 為整型變數, 並把常量 3 這個值賦給它。

相同的,第 7 行聲明了一個字元變數 ch,並將字元常量’z’賦給它。當然,在程序進行的過程中,可以為變數重新賦值,也可以使用已經聲明過的變數。

變數的介紹

變數代表程序的狀態。程序通過改變變數的值來改變整個程序的狀態,或者說得更大一些,也就是實現程序的功能邏輯。

為了方便的引用變數的值,在程序中需要為變數設定一個名稱,這就是變數名。例如在2D遊戲程序中,需要代表人物的位置,則需要2個變數,一個是x坐標,一個是y坐標,在程序運行過程中,這兩個變數的值會發生改變。

由於Java語言是一種強類型的語言,所以變數在使用以前必須首先聲明,在程序中聲明變數的語法格式如下

數據類型 變數名稱;

例如:int x;

在該語法格式中,數據類型可以是Java語言中任意的類型,包括前面介紹到的基本數據類型以及後續將要介紹的複合數據類型。變數名稱是該變數的標識符,需要符合標識符的命名規則,在實際使用中,該名稱一般和變數的用途對應,這樣便於程序的閱讀。

數據類型和變數名稱之間使用空格進行間隔,空格的個數不限,但是至少需要1個。語句使用「;」作為結束。

也可以在聲明變數的設定該變數的值,語法格式如下

數據類型 變數名稱 = 值;

例如:int x = 10;

在該語法格式中,前面的語法和上面介紹的內容一致,後續的「=」代表賦值,其中的「值」代表具體的數據。在該語法格式中,要求值的類型需要和聲明變數的數據類型一致。

也可以一次聲明多個相同類型的變數,語法格式如下:數據類型 變數名稱1,變數名稱2,…變數名稱n;例如:int x,y,z;在該語法格式中,變數名之間使用「,」分隔,這裡的變數名稱可以有任意多個。

也可以在聲明多個變數時對變數進行賦值,語法格式如下

數據類型 變數名稱1=值1,變數名稱2=值2,…變數名稱n=值n;

例如:

int x = 10,y=20,z=40;

也可以在聲明變數時,有選擇的進行賦值,例如:int x,y=10,z;以上語法格式中,如果同時聲明多個變數,則要求這些變數的類型必須相同,如果聲明的變數類型不同,則只需要分開聲明即可,例如

int n = 3;

boolean b = true;

char c;

在程序中,變數的值代表程序的狀態,在程序中可以通過變數名稱來引用變數中存儲的值,也可以為變數重新賦值。例如:

int n = 5;

n = 10;

在實際開發過程中,需要聲明什麼類型的變數,需要聲明多少個變數,需要為變數賦什麼數值,都根據程序邏輯決定,這裡列舉的只是表達的格式而已。

常量的介紹

常量代表程序運行過程中不能改變的值。

常量在程序運行過程中主要有2個作用。

分別為代表常數,便於程序的修改和增強程序的可讀性。

常量的語法格式和變數類型,只需要在變數的語法格式前面添加關鍵字final即可。在Java編碼規範中,要求常量名必須大寫。

則常量的語法格式如下

final 數據類型 常量名稱 = 值;

final 數據類型常量名稱1 = 值1, 常量名稱2 = 值2,……常量名稱n = 值n;

例如:

final double PI = 3.14;

final char MALE=『M』,FEMALE=『F』;

在Java語法中,常量也可以首先聲明,然後再進行賦值,但是只能賦值一次,示例代碼如下:

final int UP;

UP = 1;

常量的兩種用途對應的示例代碼分別如下:

代表常數

final double PI = 3.14;

int r =5;

double l = 2 * PI * r;

double s = PI * r * r;

在該示例代碼中,常量PI代表數學上的∏值,也就是圓周率,這個是數學上的常數,後續的變數r代表半徑,l代表圓的周長,s代表圓的面積。

則如果需要增加程序計算時的精度,則只需要修改PI的值3.14為3.1415926,重新編譯程序,則後續的數值自動發生改變,這樣使代碼容易修改,便於維護。

增強程序的可讀性

int direction;

final int UP = 1;

final int DOWN = 2;

final int LEFT = 3;

final int RIGHT = 4;

在該示例代碼中,變數direction代表方向的值,後續的四個常量UP、DOWN、LEFT和RIGHT分辨代表上下左右,其數值分別是1、2、3和4,這樣在程序閱讀時,可以提高程序的可讀性。

java程序員有哪些應該注意的編碼規範?

Java編碼規範: 盡量使用完整的英文描述符採用適用於相關領域的術語採用大小寫混合使名字可讀盡量少用縮寫,但如果用了,必須符合整個工程中的統一定義避免使用長的名字(小於15個字母為正常選擇)避免使用類似的名字,或者僅僅是大小寫不同的名字避免使用下劃線(除靜態常量等)標識符類型說明包(Package)的命名Package的名字應該採用完整的英文描述符,都是由一個小寫單片語成。並且包名的前綴總是一個頂級域名

,通常是com、edu、gov、mil、net、org等;如:com.yjhmily.test類(Class)的命名類名應該是個一名詞,採用大小寫混合的方式,每個單詞的首字母大寫。盡量保證類名簡潔而富於描述。

java編碼規範有哪些?

JAVA代碼規範:

(1) 類名首字母應該大寫。欄位、方法以及對象(句柄)的首字母應小寫。對於所有標識符,其中包含的所有單詞都應緊靠在一起,而且大寫中間單詞的首字母。例如:

ThisIsAClassName

thisIsMethodOrFieldName

若在定義中出現了常數初始化字元,則大寫static final基本類型標識符中的所有字母。這樣便可標誌出它們屬於編譯期的常數。

Java包(Package)屬於一種特殊情況:它們全都是小寫字母,即便中間的單詞亦是如此。對於域名擴展名稱,如com,org,net或者edu等,全部都應小寫(這也是Java 1.1和Java 1.2的區別之一)。

(2) 為了常規用途而創建一個類時,請採取”經典形式”,並包含對下述元素的定義:

equals()

hashCode()

toString()

clone()(implement Cloneable)

implement Serializable

(3) 對於自己創建的每一個類,都考慮置入一個main(),其中包含了用於測試那個類的代碼。為使用一個項目中的類,我們沒必要刪除測試代碼。若進行了任何形式的改動,可方便地返回測試。這些代碼也可作為如何使用類的一個示例使用。

(4) 應將方法設計成簡要的、功能性單元,用它描述和實現一個不連續的類介面部分。理想情況下,方法應簡明扼要。若長度很大,可考慮通過某種方式將其分割成較短的幾個方法。這樣做也便於類內代碼的重複使用(有些時候,方法必須非常大,但它們仍應只做同樣的一件事情)。

(5) 設計一個類時,請設身處地為客戶程序員考慮一下(類的使用方法應該是非常明確的)。然後,再設身處地為管理代碼的人考慮一下(預計有可能進行哪些形式的修改,想想用什麼方法可把它們變得更簡單)。

(6) 使類儘可能短小精悍,而且只解決一個特定的問題。下面是對類設計的一些建議:

■一個複雜的開關語句:考慮採用”多形”機制

■數量眾多的方法涉及到類型差別極大的操作:考慮用幾個類來分別實現

■許多成員變數在特徵上有很大的差別:考慮使用幾個類

(7) 讓一切東西都儘可能地”私有”–private。可使庫的某一部分”公共化”(一個方法、類或者一個欄位等等),就永遠不能把它拿出。若強行拿出,就可能破壞其他人現有的代碼,使他們不得不重新編寫和設計。若只公布自己必須公布的,就可放心大膽地改變其他任何東西。在多線程環境中,隱私是特別重要的一個因素–只有private欄位才能在非同步使用的情況下受到保護。

(8) 謹惕”巨大對象綜合症”。對一些習慣於順序編程思維、且初涉OOP領域的新手,往往喜歡先寫一個順序執行的程序,再把它嵌入一個或兩個巨大的對象里。根據編程原理,對象表達的應該是應用程序的概念,而非應用程序本身。

(9) 若不得已進行一些不太雅觀的編程,至少應該把那些代碼置於一個類的內部。

(10) 任何時候只要發現類與類之間結合得非常緊密,就需要考慮是否採用內部類,從而改善編碼及維護工作(參見第14章14.1.2小節的”用內部類改進代碼”)。

(11) 儘可能細緻地加上注釋,並用javadoc注釋文檔語法生成自己的程序文檔。

(12) 避免使用”魔術數字”,這些數字很難與代碼很好地配合。如以後需要修改它,無疑會成為一場噩夢,因為根本不知道”100″到底是指”數組大小”還是”其他全然不同的東西”。所以,我們應創建一個常數,並為其使用具有說服力的描述性名稱,並在整個程序中都採用常數標識符。這樣可使程序更易理解以及更易維護。

(13) 涉及構建器和異常的時候,通常希望重新丟棄在構建器中捕獲的任何異常–如果它造成了那個對象的創建失敗。這樣一來,調用者就不會以為那個對象已正確地創建,從而盲目地繼續。

(14) 當客戶程序員用完對象以後,若你的類要求進行任何清除工作,可考慮將清除代碼置於一個良好定義的方法里,採用類似於cleanup()這樣的名字,明確表明自己的用途。除此以外,可在類內放置一個boolean(布爾)標記,指出對象是否已被清除。在類的finalize()方法里,請確定對象已被清除,並已丟棄了從RuntimeException繼承的一個類(如果還沒有的話),從而指出一個編程錯誤。在採取象這樣的方案之前,請確定finalize()能夠在自己的系統中工作(可能需要調用System.runFinalizersOnExit(true),從而確保這一行為)。

(15) 在一個特定的作用域內,若一個對象必須清除(非由垃圾收集機制處理),請採用下述方法:初始化對象;若成功,則立即進入一個含有finally從句的try塊,開始清除工作。

(16) 若在初始化過程中需要覆蓋(取消)finalize(),請記住調用super.finalize()(若Object屬於我們的直接超類,則無此必要)。在對finalize()進行覆蓋的過程中,對super.finalize()的調用應屬於最後一個行動,而不應是第一個行動,這樣可確保在需要基礎類組件的時候它們依然有效。

(17) 創建大小固定的對象集合時,請將它們傳輸至一個數組(若準備從一個方法里返回這個集合,更應如此操作)。這樣一來,我們就可享受到數組在編譯期進行類型檢查的好處。此外,為使用它們,數組的接收者也許並不需要將對象”造型”到數組裡。

(18) 盡量使用interfaces,不要使用abstract類。若已知某樣東西準備成為一個基礎類,那麼第一個選擇應是將其變成一個interface(介面)。只有在不得不使用方法定義或者成員變數的時候,才需要將其變成一個abstract(抽象)類。介面主要描述了客戶希望做什麼事情,而一個類則致力於(或允許)具體的實施細節。

(19) 在構建器內部,只進行那些將對象設為正確狀態所需的工作。儘可能地避免調用其他方法,因為那些方法可能被其他人覆蓋或取消,從而在構建過程中產生不可預知的結果(參見第7章的詳細說明)。

(20) 對象不應只是簡單地容納一些數據;它們的行為也應得到良好的定義。

(21) 在現成類的基礎上創建新類時,請首先選擇”新建”或”創作”。只有自己的設計要求必須繼承時,才應考慮這方面的問題。若在本來允許新建的場合使用了繼承,則整個設計會變得沒有必要地複雜。

(22) 用繼承及方法覆蓋來表示行為間的差異,而用欄位表示狀態間的區別。一個非常極端的例子是通過對不同類的繼承來表示顏色,這是絕對應該避免的:應直接使用一個”顏色”欄位。

(23) 為避免編程時遇到麻煩,請保證在自己類路徑指到的任何地方,每個名字都僅對應一個類。否則,編譯器可能先找到同名的另一個類,並報告出錯消息。若懷疑自己碰到了類路徑問題,請試試在類路徑的每一個起點,搜索一下同名的.class文件。

(24) 在Java 1.1 AWT中使用事件”適配器”時,特別容易碰到一個陷阱。若覆蓋了某個適配器方法,同時拼寫方法沒有特別講究,最後的結果就是新添加一個方法,而不是覆蓋現成方法。然而,由於這樣做是完全合法的,所以不會從編譯器或運行期系統獲得任何出錯提示–只不過代碼的工作就變得不正常了。

(25) 用合理的設計方案消除”偽功能”。也就是說,假若只需要創建類的一個對象,就不要提前限制自己使用應用程序,並加上一條”只生成其中一個”注釋。請考慮將其封裝成一個”獨生子”的形式。若在主程序里有大量散亂的代碼,用於創建自己的對象,請考慮採納一種創造性的方案,將些代碼封裝起來。

(26) 警惕”分析癱瘓”。請記住,無論如何都要提前了解整個項目的狀況,再去考察其中的細節。由於把握了全局,可快速認識自己未知的一些因素,防止在考察細節的時候陷入”死邏輯”中。

(27) 警惕”過早優化”。首先讓它運行起來,再考慮變得更快–但只有在自己必須這樣做、而且經證實在某部分代碼中的確存在一個性能瓶頸的時候,才應進行優化。除非用專門的工具分析瓶頸,否則很有可能是在浪費自己的時間。性能提升的隱含代價是自己的代碼變得難於理解,而且難於維護。

(28) 請記住,閱讀代碼的時間比寫代碼的時間多得多。思路清晰的設計可獲得易於理解的程序,但注釋、細緻的解釋以及一些示例往往具有不可估量的價值。無論對你自己,還是對後來的人,它們都是相當重要的。如對此仍有懷疑,那麼請試想自己試圖從聯機Java文檔里找出有用信息時碰到的挫折,這樣或許能將你說服。

(29) 如認為自己已進行了良好的分析、設計或者實施,那麼請稍微更換一下思維角度。試試邀請一些外來人士–並不一定是專家,但可以是來自本公司其他部門的人。請他們用完全新鮮的眼光考察你的工作,看看是否能找出你一度熟視無睹的問題。採取這種方式,往往能在最適合修改的階段找出一些關鍵性的問題,避免產品發行後再解決問題而造成的金錢及精力方面的損失。

(30) 良好的設計能帶來最大的回報。簡言之,對於一個特定的問題,通常會花較長的時間才能找到一種最恰當的解決方案。但一旦找到了正確的方法,以後的工作就輕鬆多了,再也不用經曆數小時、數天或者數月的痛苦掙扎。我們的努力工作會帶來最大的回報(甚至無可估量)。而且由於自己傾注了大量心血,最終獲得一個出色的設計方案,成功的快感也是令人心動的。堅持****草草完工的誘惑–那樣做往往得不償失

Java編碼規範存在的意義是什麼?

1、好的編碼規範可以儘可能的減少一個軟體的維護成本,並且幾乎沒有任何一個軟體,在其整個生命周期中,均由最初的開發人員來維護;

2、好的編碼規範可以改善軟體的可讀性,可以讓開發人員儘快而徹底地理解新的代碼;

3、好的編碼規範可以最大限度的提高團隊開發的合作效率;

4、長期的規範性編碼還可以讓開發人員養成好的編碼習慣,甚至鍛鍊出更加嚴謹的思維;

如何評價阿里巴巴java編碼規範認證考試

「阿里巴巴編碼規範」是阿里雲大學基於《阿里巴巴Java開發手冊》打造的認證,用於考察以及讓開發者自查對規範的掌握程度。《阿里巴巴Java開發手冊》是阿里內部Java工程師所遵循的開發規範,涵蓋編程規約、單元測試規約、異常日誌規約、MySQL規約、工程規約、安全規約等,這是近萬名阿里Java技術精英的經驗總結,並經歷了多次大規模一線實戰檢驗及完善。該手冊於2017年2月份推出以來,引起了業界廣泛關注,目前該手冊已有幾十萬的下載量,已被很多中小型公司用來作為內部的開發規範。如果你掌握了這些規範,那麼你在進入阿里後,就不會因為編碼習慣不同而增加協同的成本,從而可以更快融入團隊。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/236825.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:02
下一篇 2024-12-12 12:02

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • 運維Python和GO應用實踐指南

    本文將從多個角度詳細闡述運維Python和GO的實際應用,包括監控、管理、自動化、部署、持續集成等方面。 一、監控 運維中的監控是保證系統穩定性的重要手段。Python和GO都有強…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Python wordcloud入門指南

    如何在Python中使用wordcloud庫生成文字雲? 一、安裝和導入wordcloud庫 在使用wordcloud前,需要保證庫已經安裝並導入: !pip install wo…

    編程 2025-04-29
  • Python應用程序的全面指南

    Python是一種功能強大而簡單易學的編程語言,適用於多種應用場景。本篇文章將從多個方面介紹Python如何應用於開發應用程序。 一、Web應用程序 目前,基於Python的Web…

    編程 2025-04-29
  • Python字元轉列表指南

    Python是一個極為流行的腳本語言,在數據處理、數據分析、人工智慧等領域廣泛應用。在很多場景下需要將字元串轉換為列表,以便於操作和處理,本篇文章將從多個方面對Python字元轉列…

    編程 2025-04-29
  • Python小波分解入門指南

    本文將介紹Python小波分解的概念、基本原理和實現方法,幫助初學者掌握相關技能。 一、小波變換概述 小波分解是一種廣泛應用於數字信號處理和圖像處理的方法,可以將信號分解成多個具有…

    編程 2025-04-29

發表回復

登錄後才能評論