java中須遵守的編程風格(java中須遵守的編程風格有哪些)

本文目錄一覽:

Java編程的特點是什麼呢

Java編程的特點是什麼呢?

Java由美國SUN公司(被oracle公司收購)發明於1995年,是目前業界應用最廣泛、使用人數最多的語言,連續多年排名世界第一,可以稱之為「計算機語言界的英語」。

那麼Java這麼高的評價它的特點有哪些,下面我來為題主解答:

一、跨平台/可移植性

這是Java的核心優勢。Java在設計時就很注重移植和跨平台性。比如:Java的int永遠都是32位。不像C++可能是16,32,可能是根據編譯器廠商規定的變化。這樣的話程序的移植就會非常麻煩。

Java首先利用文本編輯器編寫 Java源程序,源文件的後綴名為.java;再利用編譯器(javac)將源程序編譯成位元組碼文件,位元組碼文件的後綴名為.class; 最後利用虛擬機(解釋器,java)解釋執行。如下圖所示:

二、安全性

Java適合於網路/分散式環境,為了達到這個目標,在安全性方面投入了很大的精力,使Java可以很容易構建防病毒,防篡改的系統。比如Java取消了強大但又危險的指針。由於指針可進行移動運算,指針可隨便指向一個內存區域,而不管這個區域是否可用,這樣做是危險的。

三、面向對象

面向對象是一種程序設計技術,非常適合大型軟體的設計和開發。由於C++為了照顧大量C語言使用者而兼容了C,使得自身僅僅成為了帶類的C語言,多少影響了其面向對象的徹底性!Java則是完全的面向對象語言。

四、簡單性

Java就是C++語法的簡化版,我們也可以將Java稱之為「C++-」。跟我念「C加加減」,指的就是將C++的一些內容去掉;比如:頭文件,指針運算,結構,聯合,操作符重載,虛基類等等。同時,由於語法基於C語言,因此學習起來完全不費力。

五、高性能

Java最初發展階段,總是被人詬病「性能低」;客觀上,高級語言運行效率總是低於低級語言的,這個無法避免。Java語言本身發展中通過虛擬機的優化提升了幾十倍運行效率。比如,通過JIT(JUST IN TIME)即時編譯技術提高運行效率。 將一些「熱點」位元組碼編譯成本地機器碼,並將結果緩存起來,在需要的時候重新調用。這樣的話,使Java程序的執行效率大大提高,某些代碼甚至接近C++的效率。

因此,Java低性能的短腿,已經被完全解決了。業界發展上,我們也看到很多C++應用轉到Java開發,很多C++程序員轉型為Java程序員。

六、分散式

Java是為Internet的分散式環境設計的,因為它能夠處理TCP/IP協議。事實上,通過URL訪問一個網路資源和訪問本地文件是一樣簡單的。Java還支持遠程方法調用(RMI,Remote Method Invocation),使程序能夠通過網路調用方法。

七、多線程

多線程的使用可以帶來更好的交互響應和實時行為。 Java多線程的簡單性是Java成為主流伺服器端開發語言的主要原因之一。

八、健壯性

Java是一種健壯的語言,吸收了C/C++ 語言的優點,但去掉了其影響程序健壯性的部分(如:指針、內存的申請與釋放等)。Java程序不可能造成計算機崩潰。即使Java程序也可能有錯誤。如果出現某種出乎意料之事,程序也不會崩潰,而是把該異常拋出,再通過異常處理機制加以處理。

以上幾種特性你了解到啦嗎?    記得給個贊!

類名應當遵循怎麼樣的編程風格

首先,編程風格並不同於其他的style,目的並不是形成自己獨樹一幟的風格,而是為了讓你的程序易讀,有利於團隊合作以及別人幫你改錯。 風格是通用的 C語言和C++語言的編程風格 (Java見下) 第一章:縮進格式 Tab是8個字元,於是縮進也是8個字元

java編程規範!!!

名稱 Java語言編碼規範(Java Code Conventions)

 簡介 本文檔講述了Java語言的編碼規範,較之陳世忠先生《c++編碼規範》的浩繁詳盡,此文當屬短小精悍了。而其中所列之各項條款,從編碼風格,到注意事項,不單只Java,對於其他語言,也都很有借鑒意義。因為簡短,所以易記,大家不妨將此作為handbook,常備案頭,逐一對驗。

1 介紹

1.1 為什麼要有編碼規範

1.2 版權聲明

2 文件名

2.1 文件後綴

2.2 常用文件名

3 文件組織

3.1 Java源文件

3.1.1 開頭注釋

3.1.2 包和引入語句

3.1.3 類和介面聲明

4 縮進排版

4.1 行長度

4.2 換行

5 注釋

5.1 實現注釋的格式

5.1.1 塊注釋

5.1.2 單行注釋

5.1.3 尾端注釋

5.1.4 行末注釋

5.2 文擋注釋

6 聲明

6.1 每行聲明變數的數量

6.2 初始化

6.3 布局

6.4 類和介面的聲明

7 語句

7.1 簡單語句

7.2 複合語句

7.3 返回語句

7.4 if,if-else,if else-if else語句

7.5 for語句

7.6 while語句

7.7 do-while語句

7.8 switch語句

7.9 try-catch語句

8 空白

8.1 空行

8.2 空格

9 命名規範

10 編程慣例

10.1 提供對實例以及類變數的訪問控制

10.2 引用類變數和類方法

10.3 常量

10.4 變數賦值

10.5 其它慣例

10.5.1 圓括弧

10.5.2 返回值

10.5.3 條件運算符”?”前的表達式”?”前的表達式

10.5.4 特殊注釋

11 代碼範例

11.1 Java源文件範例

1 介紹(Introduction)

1.1 為什麼要有編碼規範(Why Have Code Conventions)

編碼規範對於程序員而言尤為重要,有以下幾個原因:

– 一個軟體的生命周期中,80%的花費在於維護

– 幾乎沒有任何一個軟體,在其整個生命周期中,均由最初的開發人員來維護

– 編碼規範可以改善軟體的可讀性,可以讓程序員儘快而徹底地理解新的代碼

– 如果你將源碼作為產品發布,就需要確任它是否被很好的打包並且清晰無誤,一如你已構建的其它任何產品

為了執行規範,每個軟體開發人員必須一致遵守編碼規範。每個人。

1.2 版權聲明(Acknowledgments)

本文檔反映的是Sun MicroSystems公司,Java語言規範中的編碼標準部分。主要貢獻者包括:Peter King,Patrick Naughton,Mike DeMoney,Jonni Kanerva,Kathy Walrath以及Scott Hommel。

本文檔現由Scott Hommel維護,有關評論意見請發至shommel@eng.sun.com

2 文件名(File Names)

這部分列出了常用的文件名及其後綴。

2.1 文件後綴(File Suffixes)

Java程序使用下列文件後綴:

文件類別 文件後綴

Java源文件 .java

Java位元組碼文件 .class

2.2 常用文件名(Common File Names)

常用的文件名包括:

文件名 用途

GNUmakefile makefiles的首選文件名。我們採用gnumake來創建(build)軟體。

README 概述特定目錄下所含內容的文件的首選文件名

3 文件組織(File Organization)

一個文件由被空行分割而成的段落以及標識每個段落的可選注釋共同組成。超過2000行的程序難以閱讀,應該盡量避免。”Java源文件範例”提供了一個布局合理的Java程序範例。

3.1 Java源文件(Java Source Files)

每個Java源文件都包含一個單一的公共類或介面。若私有類和介面與一個公共類相關聯,可以將它們和公共類放入同一個源文件。公共類必須是這個文件中的第一個類或介面。

Java源文件還遵循以下規則:

– 開頭注釋(參見”開頭注釋”)

– 包和引入語句(參見”包和引入語句”)

– 類和介面聲明(參見”類和介面聲明”)

3.1.1 開頭注釋(Beginning Comments)

所有的源文件都應該在開頭有一個C語言風格的注釋,其中列出類名、版本信息、日期和版權聲明:

/*

* Classname

*

* Version information

*

* Date

*

* Copyright notice

*/

3.1.2 包和引入語句(Package and Import Statements)

在多數Java源文件中,第一個非注釋行是包語句。在它之後可以跟引入語句。例如:

package java.awt;

import java.awt.peer.CanvasPeer;

3.1.3 類和介面聲明(Class and Interface Declarations)

下表描述了類和介面聲明的各個部分以及它們出現的先後次序。參見”Java源文件範例”中一個包含注釋的例子。

類/介面聲明的各部分 註解

1 類/介面文檔注釋(/**……*/) 該注釋中所需包含的信息,參見”文檔注釋”

2 類或介面的聲明

3 類/介面實現的注釋(/*……*/)如果有必要的話 該注釋應包含任何有關整個類或介面的信息,而這些信息又不適合作為類/介面文檔注釋。

4 類的(靜態)變數 首先是類的公共變數,隨後是保護變數,再後是包一級別的變數(沒有訪問修飾符,access modifier),最後是私有變數。

5 實例變數 首先是公共級別的,隨後是保護級別的,再後是包一級別的(沒有訪問修飾符),最後是私有級別的。

6 構造器

7 方法 這些方法應該按功能,而非作用域或訪問許可權,分組。例如,一個私有的類方法可以置於兩個公有的實例方法之間。其目的是為了更便於閱讀和理解代碼。

4 縮進排版(Indentation)

4個空格常被作為縮進排版的一個單位。縮進的確切解釋並未詳細指定(空格 vs. 製表符)。一個製表符等於8個空格(而非4個)。

4.1 行長度(Line Length)

盡量避免一行的長度超過80個字元,因為很多終端和工具不能很好處理之。

注意:用於文檔中的例子應該使用更短的行長,長度一般不超過70個字元。

4.2 換行(Wrapping Lines)

當一個表達式無法容納在一行內時,可以依據如下一般規則斷開之:

– 在一個逗號後面斷開

– 在一個操作符前面斷開

– 寧可選擇較高級別(higher-level)的斷開,而非較低級別(lower-level)的斷開

– 新的一行應該與上一行同一級別表達式的開頭處對齊

– 如果以上規則導致你的代碼混亂或者使你的代碼都堆擠在右邊,那就代之以縮進8個空格。

以下是斷開方法調用的一些例子:

someMethod(longExpression1, longExpression2, longExpression3,

longExpression4, longExpression5);

var = someMethod1(longExpression1,

someMethod2(longExpression2,

longExpression3));

以下是兩個斷開算術表達式的例子。前者更好,因為斷開處位於括弧表達式的外邊,這是個較高級別的斷開。

longName1 = longName2 * (longName3 + longName4 – longName5)

+ 4 * longname6; //PREFFER

longName1 = longName2 * (longName3 + longName4

– longName5) + 4 * longname6; //AVOID

以下是兩個縮進方法聲明的例子。前者是常規情形。後者若使用常規的縮進方式將會使第二行和第三行移得很靠右,所以代之以縮進8個空格

//CONVENTIONAL INDENTATION

someMethod(int anArg, Object anotherArg, String yetAnotherArg,

Object andStillAnother) {

}

//INDENT 8 SPACES TO AVOID VERY DEEP INDENTS

private static synchronized horkingLongMethodName(int anArg,

Object anotherArg, String yetAnotherArg,

Object andStillAnother) {

}

if語句的換行通常使用8個空格的規則,因為常規縮進(4個空格)會使語句體看起來比較費勁。比如:

//DON』T USE THIS INDENTATION

if ((condition1 condition2)

|| (condition3 condition4)

||!(condition5 condition6)) { //BAD WRAPS

doSomethingAboutIt(); //MAKE THIS LINE EASY TO MISS

}

//USE THIS INDENTATION INSTEAD

if ((condition1 condition2)

|| (condition3 condition4)

||!(condition5 condition6)) {

doSomethingAboutIt();

}

//OR USE THIS

if ((condition1 condition2) || (condition3 condition4)

||!(condition5 condition6)) {

doSomethingAboutIt();

}

這裡有三種可行的方法用於處理三元運算表達式:

alpha = (aLongBooleanExpression) ? beta : gamma;

alpha = (aLongBooleanExpression) ? beta

: gamma;

alpha = (aLongBooleanExpression)

? beta

: gamma;

5 注釋(Comments)

Java程序有兩類注釋:實現注釋(implementation comments)和文檔注釋(document comments)。實現注釋是那些在C++中見過的,使用/*…*/和//界定的注釋。文檔注釋(被稱為”doc comments”)是Java獨有的,並由/**…*/界定。文檔注釋可以通過javadoc工具轉換成HTML文件。

實現注釋用以注釋代碼或者實現細節。文檔注釋從實現自由(implementation-free)的角度描述代碼的規範。它可以被那些手頭沒有源碼的開發人員讀懂。

注釋應被用來給出代碼的總括,並提供代碼自身沒有提供的附加信息。注釋應該僅包含與閱讀和理解程序有關的信息。例如,相應的包如何被建立或位於哪個目錄下之類的信息不應包括在注釋中。

在注釋里,對設計決策中重要的或者不是顯而易見的地方進行說明是可以的,但應避免提供代碼中己清晰表達出來的重複信息。多餘的的注釋很容易過時。通常應避免那些代碼更新就可能過時的注釋。

注意:頻繁的注釋有時反映出代碼的低質量。當你覺得被迫要加註釋的時候,考慮一下重寫代碼使其更清晰。

注釋不應寫在用星號或其他字元畫出來的大框里。注釋不應包括諸如製表符和回退符之類的特殊字元。

5.1 實現注釋的格式(Implementation Comment Formats)

程序可以有4種實現注釋的風格:塊(block)、單行(single-line)、尾端(trailing)和行末(end-of-line)。

5.1.1 塊注釋(Block Comments)

塊注釋通常用於提供對文件,方法,數據結構和演算法的描述。塊注釋被置於每個文件的開始處以及每個方法之前。它們也可以被用於其他地方,比如方法內部。在功能和方法內部的塊注釋應該和它們所描述的代碼具有一樣的縮進格式。

塊注釋之首應該有一個空行,用於把塊注釋和代碼分割開來,比如:

/*

* Here is a block comment.

*/

塊注釋可以以/*-開頭,這樣indent(1)就可以將之識別為一個代碼塊的開始,而不會重排它。

/*-

* Here is a block comment with some very special

* formatting that I want indent(1) to ignore.

*

* one

* two

* three

*/

注意:如果你不使用indent(1),就不必在代碼中使用/*-,或為他人可能對你的代碼運行indent(1)作讓步。

參見”文檔注釋”

5.1.2 單行注釋(Single-Line Comments)

短注釋可以顯示在一行內,並與其後的代碼具有一樣的縮進層級。如果一個注釋不能在一行內寫完,就該採用塊注釋(參見”塊注釋”)。單行注釋之前應該有一個空行。以下是一個Java代碼中單行注釋的例子:

if (condition) {

/* Handle the condition. */

}

5.1.3 尾端注釋(Trailing Comments)

極短的注釋可以與它們所要描述的代碼位於同一行,但是應該有足夠的空白來分開代碼和注釋。若有多個短注釋出現於大段代碼中,它們應該具有相同的縮進。

以下是一個Java代碼中尾端注釋的例子:

if (a == 2) {

return TRUE; /* special case */

} else {

return isPrime(a); /* works only for odd a */

}

5.1.4 行末注釋(End-Of-Line Comments)

注釋界定符”//”,可以注釋掉整行或者一行中的一部分。它一般不用於連續多行的注釋文本;然而,它可以用來注釋掉連續多行的代碼段。以下是所有三種風格的例子:

if (foo 1) {

// Do a double-flip.

}

else {

return false; // Explain why here.

}

//if (bar 1) {

//

// // Do a triple-flip.

// …

//}

//else {

// return false;

//}

5.2 文檔注釋(Documentation Comments)

注意:此處描述的注釋格式之範例,參見”Java源文件範例”

若想了解更多,參見”How to Write Doc Comments for Javadoc”,其中包含了有關文檔注釋標記的信息(@return, @param, @see):

若想了解更多有關文檔注釋和javadoc的詳細資料,參見javadoc的主頁:

文檔注釋描述Java的類、介面、構造器,方法,以及欄位(field)。每個文檔注釋都會被置於注釋定界符/**…*/之中,一個注釋對應一個類、介面或成員。該注釋應位於聲明之前:

/**

* The Example class provides …

*/

public class Example { …

注意頂層(top-level)的類和介面是不縮進的,而其成員是縮進的。描述類和介面的文檔注釋的第一行(/**)不需縮進;隨後的文檔注釋每行都縮進1格(使星號縱向對齊)。成員,包括構造函數在內,其文檔注釋的第一行縮進4格,隨後每行都縮進5格。

若你想給出有關類、介面、變數或方法的信息,而這些信息又不適合寫在文檔中,則可使用實現塊注釋(見5.1.1)或緊跟在聲明後面的單行注釋(見5.1.2)。例如,有關一個類實現的細節,應放入緊跟在類聲明後面的實現塊注釋中,而不是放在文檔注釋中。

文檔注釋不能放在一個方法或構造器的定義塊中,因為Java會將位於文檔注釋之後的第一個聲明與其相關聯。

6 聲明(Declarations)

6.1 每行聲明變數的數量(Number Per Line)

推薦一行一個聲明,因為這樣以利於寫注釋。亦即,

int level; // indentation level

int size; // size of table

要優於,

int level, size;

不要將不同類型變數的聲明放在同一行,例如:

int foo, fooarray[]; //WRONG!

注意:上面的例子中,在類型和標識符之間放了一個空格,另一種被允許的替代方式是使用製表符:

int level; // indentation level

int size; // size of table

Object currentEntry; // currently selected table entry

6.2 初始化(Initialization)

盡量在聲明局部變數的同時初始化。唯一不這麼做的理由是變數的初始值依賴於某些先前發生的計算。

6.3 布局(Placement)

只在代碼塊的開始處聲明變數。(一個塊是指任何被包含在大括弧”{“和”}”中間的代碼。)不要在首次用到該變數時才聲明之。這會把注意力不集中的程序員搞糊塗,同時會妨礙代碼在該作用域內的可移植性。

void myMethod() {

int int1 = 0; // beginning of method block

if (condition) {

int int2 = 0; // beginning of “if” block

}

}

該規則的一個例外是for循環的索引變數

for (int i = 0; i maxLoops; i++) { … }

避免聲明的局部變數覆蓋上一級聲明的變數。例如,不要在內部代碼塊中聲明相同的變數名:

int count;

myMethod() {

if (condition) {

int count = 0; // AVOID!

}

}

6.4 類和介面的聲明(Class and Interface Declarations)

當編寫類和介面是,應該遵守以下格式規則:

– 在方法名與其參數列表之前的左括弧”(“間不要有空格

– 左大括弧”{“位於聲明語句同行的末尾

– 右大括弧”}”另起一行,與相應的聲明語句對齊,除非是一個空語句,”}”應緊跟在”{“之後

class Sample extends Object {

int ivar1;

int ivar2;

Sample(int i, int j) {

ivar1 = i;

ivar2 = j;

}

int emptyMethod() {}

}

– 方法與方法之間以空行分隔

7 語句(Statements)

7.1 簡單語句(Simple Statements)

每行至多包含一條語句,例如:

argv++; // Correct

argc–; // Correct

argv++; argc–; // AVOID!

7.2 複合語句(Compound Statements)

複合語句是包含在大括弧中的語句序列,形如”{ 語句 }”。例如下面各段。

– 被括其中的語句應該較之複合語句縮進一個層次

– 左大括弧”{“應位於複合語句起始行的行尾;右大括弧”}”應另起一行並與複合語句首行對齊。

– 大括弧可以被用於所有語句,包括單個語句,只要這些語句是諸如if-else或for控制結構的一部分。這樣便於添加語句而無需擔心由於忘了加括弧而引入bug。

7.3 返回語句(return Statements)

一個帶返回值的return語句不使用小括弧”()”,除非它們以某種方式使返回值更為顯見。例如:

return;

return myDisk.size();

return (size ? size : defaultSize);

7.4 if,if-else,if else-if else語句(if, if-else, if else-if else Statements)

if-else語句應該具有如下格式:

if (condition) {

statements;

}

if (condition) {

statements;

} else {

statements;

}

if (condition) {

statements;

} else if (condition) {

statements;

} else{

statements;

}

注意:if語句總是用”{“和”}”括起來,避免使用如下容易引起錯誤的格式:

if (condition) //AVOID! THIS OMITS THE BRACES {}!

statement;

7.5 for語句(for Statements)

一個for語句應該具有如下格式:

for (initialization; condition; update) {

statements;

}

一個空的for語句(所有工作都在初始化,條件判斷,更新子句中完成)應該具有如下格式:

for (initialization; condition; update);

當在for語句的初始化或更新子句中使用逗號時,避免因使用三個以上變數,而導致複雜度提高。若需要,可以在for循環之前(為初始化子句)或for循環末尾(為更新子句)使用單獨的語句。

7.6 while語句(while Statements)

一個while語句應該具有如下格式

while (condition) {

statements;

}

一個空的while語句應該具有如下格式:

while (condition);

7.7 do-while語句(do-while Statements)

一個do-while語句應該具有如下格式:

do {

statements;

} while (condition);

7.8 switch語句(switch Statements)

一個switch語句應該具有如下格式:

switch (condition) {

case ABC:

statements;

/* falls through */

case DEF:

statements;

break;

case XYZ:

statements;

break;

default:

statements;

break;

}

每當一個case順著往下執行時(因為沒有break語句),通常應在break語句的位置添加註釋。上面的示例代碼中就包含注釋/* falls through */。

7.9 try-catch語句(try-catch Statements)

一個try-catch語句應該具有如下格式:

try {

statements;

} catch (ExceptionClass e) {

statements;

}

一個try-catch語句後面也可能跟著一個finally語句,不論try代碼塊是否順利執行完,它都會被執行。

try {

statements;

} catch (ExceptionClass e) {

statements;

} finally {

statements;

}

8 空白(White Space)

8.1 空行(Blank Lines)

空行將邏輯相關的代碼段分隔開,以提高可讀性。

下列情況應該總是使用兩個空行:

– 一個源文件的兩個片段(section)之間

– 類聲明和介面聲明之間

下列情況應該總是使用一個空行:

– 兩個方法之間

– 方法內的局部變數和方法的第一條語句之間

– 塊注釋(參見”5.1.1″)或單行注釋(參見”5.1.2″)之前

– 一個方法內的兩個邏輯段之間,用以提高可讀性

8.2 空格(Blank Spaces)

下列情況應該使用空格:

– 一個緊跟著括弧的關鍵字應該被空格分開,例如:

while (true) {

}

注意:空格不應該置於方法名與其左括弧之間。這將有助於區分關鍵字和方法調用。

– 空白應該位於參數列表中逗號的後面

– 所有的二元運算符,除了”.”,應該使用空格將之與操作數分開。一元操作符和操作數之間不因該加空格,比如:負號(“-“)、自增(“++”)和自減(“–“)。例如:

a += c + d;

a = (a + b) / (c * d);

while (d++ = s++) {

n++;

}

printSize(“size is ” + foo + “\n”);

– for語句中的表達式應該被空格分開,例如:

for (expr1; expr2; expr3)

– 強制轉型後應該跟一個空格,例如:

myMethod((byte) aNum, (Object) x);

myMethod((int) (cp + 5), ((int) (i + 3)) + 1);

9 命名規範(Naming Conventions)

命名規範使程序更易讀,從而更易於理解。它們也可以提供一些有關標識符功能的信息,以助於理解代碼,例如,不論它是一個常量,包,還是類。

標識符類型 命名規則 例子

包(Packages) 一個唯一包名的前綴總是全部小寫的ASCII字母並且是一個頂級域名,通常是com,edu,gov,mil,net,org,或1981年ISO 3166標準所指定的標識國家的英文雙字元代碼。包名的後續部分根據不同機構各自內部的命名規範而不盡相同。這類命名規範可能以特定目錄名的組成來區分部門(department),項目(project),機器(machine),或註冊名(login names)。 com.sun.eng

com.apple.quicktime.v2

edu.cmu.cs.bovik.cheese

類(Classes) 命名規則:類名是個一名詞,採用大小寫混合的方式,每個單詞的首字母大寫。盡量使你的類名簡潔而富於描述。使用完整單詞,避免縮寫詞(除非該縮寫詞被更廣泛使用,像URL,HTML) class Raster;

class ImageSprite;

介面(Interfaces) 命名規則:大小寫規則與類名相似 interface RasterDelegate;

interface Storing;

方法(Methods) 方法名是一個動詞,採用大小寫混合的方式,第一個單詞的首字母小寫,其後單詞的首字母大寫。 run();

runFast();

getBackground();

變數(Variables) 除了變數名外,所有實例,包括類,類常量,均採用大小寫混合的方式,第一個單詞的首字母小寫,其後單詞的首字母大寫。變數名不應以下劃線或美元符號開頭,儘管這在語法上是允許的。

變數名應簡短且富於描述。變數名的選用應該易於記憶,即,能夠指出其用途。盡量避免單個字元的變數名,除非是一次性的臨時變數。臨時變數通常被取名為i,j,k,m和n,它們一般用於整型;c,d,e,它們一般用於字元型。 char c;

int i;

float myWidth;

實例變數(Instance Variables) 大小寫規則和變數名相似,除了前面需要一個下劃線 int _employeeId;

String _name;

Customer _customer;

常量(Constants) 類常量和ANSI常量的聲明,應該全部大寫,單詞間用下劃線隔開。(盡量避免ANSI常量,容易引起錯誤) static final int MIN_WIDTH = 4;

static final int MAX_WIDTH = 999;

static final int GET_THE_CPU = 1;

10 編程慣例(Programming Practices)

10.1 提供對實例以及類變數的訪問控制(Providing Access to Instance and Class Variables)

若沒有足夠理由,不要把實例或類變數聲明為公有。通常,實例變數無需顯式的設置(set)和獲取(gotten),通常這作為方法調用的邊緣效應 (side effect)而產生。

一個具有公有實例變數的恰當例子,是類僅作為數據結構,沒有行為。亦即,若你要使用一個結構(struct)而非一個類(如果java支持結構的話),那麼把類的實例變數聲明為公有是合適的。

Java的特點有哪些?

Java是一種優秀的程序設計語言,它具有令人賞心悅目的語法和易於理解的語義。不僅如此,Java還是一個由一系列計算機軟體和規範形成的技術體系,這個技術體系提供了完整的用於軟體開發和跨平台部署的支持環境,並廣泛應用於嵌入式系統、移動終端、企業伺服器、大型機等各種場合。順便說一下,JavaScript和Java沒有任何關係,最開始JavaScript叫liveScript,當時Java太火了,於是乎 liveScript更名為JavaScript借勢宣傳了一波。

   隨便搜搜近幾年的編程類語言排行榜,Java絕對都是當之無愧的老大哥。那麼,Java究竟有什麼特性能獲得 廣大程序員的一致青睞呢? 在此列出java的11個特性:

1.簡單性

Java語法是C++語法的一個「純凈版本」。這裡沒有頭文件,指針運算(甚至指針語法),結構,聯合,操作符重載,虛基類等等。不僅如此,Java開發環境遠遠超出大多數其他編程語言的開發環境。

2.面向對象

 什麼是面向對象?用木匠打一個比方,一個「面向對象」的木匠始終關注的是所製作的椅子,第二位才是所使用的工具;而一個「非面向對象」木匠首先考慮的是所使用的工具。

 在Java的世界裡,一切皆對象。

 Java的面向對象特性與C++旗鼓相當,與C++不同的點在於多重繼承。在Java中,取而代之的是更簡單的介面概念。而且與C++想比,Java提供了更豐富非運行時自省功能。

3.分散式(微服務)

  Java有豐富的常式庫,用於處理HTTP和FTP之類的TCP/IP協議。Java應用程序能夠通過URL打開和訪問網路上的對象,其便捷程度就好像訪問本地文件一樣。

4.健壯性

  Java與C++最大的不同在於Java使用的指針模型可以消除重寫內存和損壞數據的可能性(對於曾經花費幾個小時來檢查由於指針bug而引起內存衝突的人來說,一定很喜歡Java的這一特性)。不僅如此,Java編譯器能夠檢測許多在其他語言中僅在運行時才能夠檢測出來的問題。

5.安全性

  Java適用於網路/分式式環境。為了達到這個目標,在安全性方面投入了大量的精力。使用Java可以構建防病毒,防篡改的系統。

從一開始,Java就設計出能夠防範常見的各種攻擊:

(1)運行時堆棧溢出。蠕蟲和病毒常用的攻擊手段。(2)破壞自己進程空間之外的內存。(3)未經授權讀寫文件。

6.體系結構中立

編譯器生成一個體系結構中立的目標文件格式,這是一種編譯過的代碼,只要有Java運行時系統,這些編譯後的代碼就可以在許多處理器上運行。Java編譯器通過生成與特定計算機體系結構無關的位元組碼指令來實現這一特性。精心設計的位元組碼不僅可以很容易的在任何機器上解釋執行,而且還可以動態地翻譯成本地機器代碼。

7.可移植性

 與C/C++不同,Java規範中沒有「依賴具體實現的地方」。基本數據類型的大小以及有關運算都做了明確的說明。例如,Java中的int永遠是32位的整數,二在C/C++中,int可能是16位整數,32位整數,也可能是編譯器提供商指定的其他大小。在Java中,數據類型具有固定的大小,這消除了代碼代碼移植時令人頭疼的主要問題。

8.解釋型

Java解釋器可以再任何移植了解解釋器的機器上執行Java位元組碼。由於鏈接是一個增量式且輕量級的過程。所以開發過程也變得更加快捷,更加具有探索性。

9.高能性

儘管對解釋後的位元組碼性能已經比較滿意,但是在某些場合下可能需要更加高效的性能。位元組碼可以(在運行時刻)動態的翻譯成對應運行這個應用的特定CPU的機器碼。

10.多線程

 Java在當時很超前,他是第一個支持並發程序設計的主流語言,多線程可以帶來更好的交互影響和實時行為。並發程序設計絕非易事,但是Java在這方面表現出色,可以很好的管理這個工作。

11.動態性

Java與C/C++相比更具有動態性。它能夠適應不斷發展的環境。庫中可以自由的添加新方法和實例變數,而對客戶端沒有任何影響。在Java中找出運行時類型信息十分簡單。

什麼是良好的編程風格(Java編程)

首先,編程風格並不同於其他的style,目的並不是形成自己獨樹一幟的風格,而是為了讓你的程序易讀,有利於團隊合作以及別人幫你改錯。

風格是通用的

C語言和C++語言的編程風格 (Java見下)

第一章:縮進格式

Tab是8個字元,於是縮進也是8個字元.有很多怪異的風格,他們將縮進格式定義為4個字元(設置為2個字元!)的深度,這就象試圖將PI定義為3一樣讓人難以接受.

理由是:縮進的大小是為了清楚的定義一個塊的開始和結束.特別是當你已經在計算機前面呆了20多個小時了以後,你會發現一個大的縮進格式使得你對程序的理解更容易.

現在,有一些人說,使用8個字元的縮進使得代碼離右邊很近,在80個字元寬度的終端屏幕上看程序很難受.回答是,但你的程序有3個以上的縮進的時候,你就應該修改你的程序.

總之,8個字元的縮進使得程序易讀,還有一個附加的好處,就是它能在你將程序變得嵌套層數太多的時候給你警告.這個時候,你應該修改你的程序.

第二章:大符號的位置

另外一個C程序編程風格的問題是對大括弧的處理.同縮進大小不同,幾乎沒有什麼理由去選擇一種而不選擇另外一種風格,但有一種推薦的風格,它是Kernighan和Ritchie的經典的那本書帶來的,它將開始

的大括弧放在一行的最後,而將結束大括弧放在一行的第一位,如下所示:

if (x is true) { we do y }

然而,還有一種特殊的情況:命名函數:開始的括弧是放在下一行的第一位,如下:

int function(int x) { body of function }

所有非正統的人會非難這種不一致性,但是,所有思維正常的人明白: (第一) KR是___對___的,(第二)如果KR不對,請參見第一條. (:-))……另外,函數也是特殊的,不一定非得一致.

需要注意的是結束的括弧在它所佔的那一行是空的,__除了__它跟隨著同一條語句的繼續符號.如”while”在do-while循環中,或者”else”在if語句中.如下:

do { body of do-loop } while (condition);

以及

if (x == y) { .. } else if (x y) { … } else { …. }

理由: KR.

另外,注意到這種大括弧的放置方法減小了空行的數量,但卻沒有減少可讀性.於是,在屏幕大小受到限制的時候,你就可以有更多的空行來寫些注釋了.

第三章:命名系統

C是一種簡潔的語言,那麼,命名也應該是簡潔的.同MODULE-2以及ASCAL語言不同的是,C程序員不使用諸如ThisVariableIsATemporaryCounter之類的命名方式.一個C語言的程序員會將之命名為”tmp”,這很容易書寫,且並不是那麼難以去理解.

然而,當混合類型的名字不得不出現的時候,描述性名字對全局變數來說是必要的了.調用一個名為”foo”全局的函數是很讓人惱火的.全局變數(只有你必須使用的時候才使用它) ,就象全局函數一樣,需要描述性的命名方式.假如你有一個函數用來計算活動用戶的數量,你應該這樣命名–“count_active_users()”–或另外的相近的形式,你不應命名為”cntusr()”.

有一種稱為Hungarian命名方式,它將函數的類型編碼寫入變數名中,這種方式是腦子有毛病的一種表現—編譯器知道這個類型而且會去檢查它,而這樣只會迷惑程序員. –知道為什麼Micro$oft為什麼會生產這麼多”臭蟲”程序了把!!.

局部變數的命名應該短小精悍.假如你有一個隨機的整數循環計數器,它有可能有”i”,如果沒有任何可能使得它能被誤解的話,將其寫作”loop_counter”是效率低下的.同樣的,””tmp”可以是任何臨時數值的函數變數.

如果你害怕混淆你的局部變數的名字,還有另外一個問題,就是稱

function-growth-hormone-imbalancesyndrome.

第四章:函數

函數應該短小而迷人,而且它只作一件事情.它應只覆蓋一到兩個屏幕(80*24一屏),並且只作一件事情,而且將它做好.(這不就是UNIX的風格嗎,譯者注).

一個函數的最大長度和函數的複雜程度以及縮進大小成反比.於是,如果你已經寫了簡單但長度較長的的函數,而且你已經對不同的情況做了很多很小的事情,寫一個更長一點的函數也是無所謂的.

然而,假如你要寫一個很複雜的函數,而且你已經估計到假如一般人讀這個函數,他可能都不知道這個函數在說些什麼,這個時候,使用具有描述性名字的有幫助的函數.

另外一個需要考慮的是局部變數的數量.他們不應該超過5-10個,否則你有可能會出錯.重新考慮這個函數,將他們分割成更小的函數.人的大腦通常可以很容易的記住7件不同的事情,超過這個數量會引起混亂.你知道你很聰明,但是你可能仍想去明白2周以前的做的事情.

第5章:注釋

注釋是一件很好的事情,但是過多的注釋也是危險的,不要試圖區解釋你的代碼是注釋如何如何的好:你應該將代碼寫得更好,而不是花費大量的時間去解釋那些糟糕的代碼.

通常情況下,你的注釋是說明你的代碼做些什麼,而不是怎麼做的.而且,要試圖避免將注釋插在一個函數體里:假如這個函數確實很複雜,你需要在其中有部分的注釋,你應該回到第四章看看.你可以寫些簡短的注釋來註明或警告那些你認為特別聰明(或極其醜陋)的部分,但是你必須要避免過多.取而代之的是,將注釋寫在函數前,告訴別人它做些什麼事情,和可能為什麼要這樣做.

第六章:你已經深陷其中了.

不要著急.你有可能已經被告之”GUN emacs”會自動的幫你處理C的源代碼格式,而且你已經看到它確實如此,但是,預設的情況下,它的作用還是不盡如人意(實際上,他們比隨便敲出來的東西還要難看- ainfinite number of monkeys typing into GNU emacs would never make a good program)

於是,你可以要麼不要使用GUN emacs,要麼讓它使用sanervalules.使用後者,你需要將如下的語句輸入到你的.emacs文件中.(defun linux-c-mode() “C mode with adjusted defaults for use with the Linux kernel.”(interactive) (c-mode) (c-set-style”KR”) (setq c-basic-offset8))

這會定義一個M-x Linux-c-mode的命令.當你hacking一個模塊的時候,如何你將-*- linux-c -*-輸入在最開始的兩行,這個模式會自動起作用.而且,你也許想加入如下

(setq auto-mode-alist (cons ‘(“/usr/src/linux.*/.*.〖ch〗$” . linux-c-mode) auto-mode-alist))

到你的.emacs文件中,這樣的話,當你在/usr/src/linux下編輯文件的時候,它會自動切換到linux-c-mode .

但是,假如你還不能讓emaces去自動處理文件的格式,不要緊張,你還有一樣東西: “縮進” .

GNU的縮進格式也很死板,這就是你為什麼需要加上幾行命令選項.然而,這還不算太壞,因為GNU縮進格式的創造者也記得KR的權威, (GNU沒有罪,他們僅僅是在這件事情上錯誤的引導了人們) ,你要做的就只有輸入選項”-kr -i8″(表示”KR,縮進8個字元).

“縮進”有很多功能,特別是當它建議你重新格式你的代碼的時候,你應該看看幫助.但要記住: “縮進”不是風格很差的程序的萬靈丹.

JAVA編程風格簡析

很久以來都在體會著JAVA的風格,現在做一簡單陳述,希望大家多提寶貴意見。

對於一種好的編程語言,學習它的編程風格是很重要的。每種語言都有自己的編寫和注釋約定,當然所有語言都建立在最基本的約定之上。編程中最重要的並不是讓代碼按自己希望的方式運行,而是程序中那種自明的編程風格(這對於程序員的益處相信眾多程序員都身有體會)!但這還不夠,程序還應該具有可讀、相對持久和可維護性。可讀性非常重要,因為你不希望自己以前的作品在之後的閱讀中給自己留下障礙,當然,更重要的是自己的程序能讓其他程序員讀懂並且修改。

下面我把工作中所理解的java風格做一簡單總結,這是我所理解的好的編程風格和應用中我們應當如何使用java編寫自己的代碼的小Guide。這並不完全,希望大家幫我陸續總結各自的經驗。

一般性概述

好的編程風格固然重要,但是你一定聽說過一些程序員的個人風格。其實我們完全不必為那些所謂條條框框所累,但是作為原則是我們至少不能打破這些常規。我們應該在保持自己風格的同時盡量的把自己與編程潛原則靠攏。

可讀性很容易達到,比如,讓自己的代碼縮排排列、名字採用描述性但不要過長(短名應僅僅用在非遠程)、特殊名稱比如pi應當被定義為final類型。模塊性是編程需要注意的另一重點,把代碼劃分到類里,在類中把功能劃分到方法中,別讓一個類太大,否則在使用、修改和理解上都會造成不必要的麻煩,方法也一樣,如果一個方法長度超過50行,它產生錯誤的概率將接近100%,盡量把大方法劃分為小方法,編程中為避免重複編寫,還應盡量調用JAVA標準類庫。

盡量避免在寫代碼和注釋時使用不同語言,經常見到論壇有朋友詢問諸如在java中調用c、調用php、調用shell之類的問題,其實在編程中,我們應盡量使用一種語言去完成事情。另外就是不必最優化自己的代碼,應該選擇相對較優的演算法就可以了。

類、方法和fields

類應體現出某種物質的基本概念,比如要編程實現「汽車」的組成,那麼所有的汽車都可以用類Car實現。這個類應當包括域描述、屬性描述和car的狀態(color, number of doors, age等)和由car可完成的操作(getColor, setColor等)。為了提高類的可重用性,不要在類中有過多的描述,當然這也會增加錯誤產生的機會。

類名首字母大寫,比如Date, String, Hashtable等 … …

類如下定義:(未使用Javadoc做注釋):

public class Car {

/* Instance variables are placed either in the beginning

or at the end of the class */

private int age;

private Color color;

/* The constructor should be placed in the beginning */

public Car(int age, Color color) {

this.age = age;

this.color = color;

}

/* Example method */

public int getAge() {

return age;

}

/* The main method is optional, but looks like this.

If it exists, it is either the first or the last

method in the class */

public static void main(String [] args) {

}

}

注意類名和大括弧間的空格!

方法

方法一般定義為public。當然,如果方法僅僅在當前類用到可以定義為private,而如果希望一個子類沿用這個方法則不同,這時候的方法應定義為protected。

java中的方法定義很有趣,它們一般小寫字母開頭,如果有兩個字組成,第二個字的首字母則大寫。因此名字的描述性是至關重要的。這使你不用閱讀整篇代碼來判斷這是一個什麼方法。在給自己的方法取名時應盡量不要太短或者太長,另一個需要注意的是大多方法使用動詞(動賓短語)。

例如:

public void eat() {}

public void eatBananas() {}

Selector(選擇器)方法有get前綴,後綴是它們將要get的,比如

public int getBananas() {}

Mutator(存取器)方法則有set前綴,後綴則是他們要set的,比如

public void setBananas(int amount) {}

注意mutators大多無返回值。

方法的參數應當以如下方式給出:

public void aMethod(type parameter1, type parameter2, … , type parametern) {}

如果參數過長,也可以斷開為幾行,應對齊向下排列如:

public void aMethod(type parameter1, type parameter2,… ,

type parametern, type parameter n+1,… ,

type parameterm, type parameter m+1) {}

另外要注意類的左束括弧應在方法的右束括弧之後而非下一行:

public int aMethod() {

int i = 0;

if(i == 0)

System.out.println(“success!”);

}

為了文件可讀性好,還要注意語句最好寫在同一行,當然一行寫不下是可以斷行的,比如行字母超過80。

fields

比如變數,如果不希望它永久有效,應設為private。如果一個變數在類中不發生任何動作(比如數據結構中的node)則可以設置為public,常量一般聲明為public。如果不能確定一個變數到底該聲明為什麼,應暫且聲明為private。

field的名字一般使用小寫字母,不要使用下橫線或其他特殊字元。 如果變數包含兩個字,那麼第二個字的首字母大寫。比如:

int i, j, k;

Date date;

double myField;

常量一般全部大寫,也可以包含下橫線:

public static final int MAX_SIZE_OF_DATABASE

fields的名字通常為名詞。較重要的fields更應具備描述性,比如程序中包含一個遊戲的得分,那可以用score來代表。如果變數變化較頻繁,那使用一個單一字元來代表就ok了:

i, j, k 通常代表整數

r, t, u, v, w 通常代表實數

x, y, z 通常是並列出現或代表浮點數

s, s1, s2, 通常代表字元串

c, ch 通常代表字元

f, file 通常代表文件

tmp, temp 通常代表臨時變數

ctr, cnt, cntr 一般代表計數器(如果i, j, k這些變數已被使用)

dummy, foo, bar 一般代表啞元變數

args 是main-method的主參數名

縮排與換行

每行長度不得超過80字元。如果需要可以折行時,也應當與上一行有共同的縮排距離。代碼應如何交錯、如何建立新行、在哪裡建立允許、哪裡不允許都有一些一般約定,縮排空格一般為2個或4個空格。

條件表達式

如果見到如下語法表達式:

if (expr)

statement1;

else

statement2;

代碼行向右錯排兩個空格如上所示。

如果在一個表達式中有超過一條的聲明,則需要大括弧:

if (expr){

statement1;

statement2;

} else{

statement3;

statement4;

}

有時我們會希望在表達式中使用表達式(比如條件嵌套),這時應注意else表達式,它的位置很容易出錯!如例:

if (expr1) {

statement1;

statement2;

} else if (expr2)

statement3;

else if (expr3) {

statement4;

statement5;

} else {

statement6;

statement7;

}

注意大括弧位置!

Loops

while-loop語法如下:

while (expr) {

statement1;

statement2;

}

for-loop語法如下:

for (expr1; expr2; expr3){

statement1;

statement2;

}

注意大括弧位置!僅一條聲明時大括弧省略:

while (expr)

statement;

for (expr1; expr2; expr3)

statement;

例如,我們寫一個procedure寫出1到10這十個數字:

for (i = 1; i = 10; i++)

System.out.println(i);

try-catch語法形如:

try {

statements;

} catch (ExceptionClass e) {

statements;

}

如果try-catch語句後跟隨finally子句則形如:

try {

statements;

} catch (ExceptionClass e) {

statements;

} finally {

statements;

}

新行

每一行最好只闡述一件事情。比如,一行包含一個聲明、一個條件語句、一個循環等。不論多小,最好不要一行辦兩件事及以上。例如不要把一個if表達式或循環語句的主體放置在同一行,這樣的表達式斷行的易讀性會更高。通常,互相協作的代碼應放在一起,為保證代碼美觀可讀,我們應將代碼的不同代碼段放置在不同的段落。不過要牢記斷行不要太過分!比如:

public int factorial(int n) {

int result = 1;

for(int i = 1; i = n; i++)

result*=i;

return result;

}

給自己的代碼加入注釋

注釋就是類的描繪、方法存在的原因、它完成了什麼以及它對它其中(變數)的作用域。假定閱讀你代碼的人已經知道這是什麼語言,所以不需要注釋語句功能,盡量使用簡短而有描述力的注釋。

Java有兩種類型的注釋:

//This is a comment that continues until the end of the line.

/* This is a comment. It goes on and on and on and on and on and on and on

and on and on and on and on and on and on and on and on and on and on and

on and on and on and on and on and on and on and on and ends like this: */

/**

* This is a JavaDoc comment. More about JavaDoc in the next section.

*/

如果在注釋中加入注釋則會出錯:

/* You are not allowed to do anything like this /* because the compiler will

complain, if you are lucky */ DON’T DO THIS! And don’t write comments in

upper case either… */

注釋應放在它要解釋內容上下,這樣會讓代碼更易於理解。

不要注釋一些語言的語句功能:

i++; // Add 1 to i

更不要讓自己的代碼處於這種狀態:

for(int i = 1; i = n; i++)

/* don’t place comments where

they don’t belong */

result*=i;

較短的注釋既可被放在被注釋代碼上下,而長注釋則習慣性的放在代碼之上:

/* Comments can be placed before the

block that is to be commented */

for(int i = 1; i = n; i++)

result*=i;

或者:

for(int i = 1; i = n; i++){

result*=i; // short comments can be placed like this

tmp++; // if necessary, they continue here

}

不要寫沒用的注釋:

i++; // change this later

Excuse me,這句肯定是胡扯!

不要寫自己都看不懂的注釋:

i++; // BMW

BMW? 如果你能連續十天記住這是什麼意思的話,那麼你的記憶真是不錯了。所以不要寫沒人能看懂的注釋,ok?

最後重申一下:寫簡短而富於描述性的注釋,把它們放在該放的地方,而不要考驗你自己的記憶力!

JavaDoc – 文檔工具

JavaDoc不僅是另一種給代碼加註釋的彷彿咱,更是一個文檔工具。類、方法和一些重要地方需要用JavaDoc來注釋。這並不是說你可以放棄常規的注釋,這兩者在代碼中應該是相輔相成、互相彌補的關係。

類被注釋如:

/**

* Car represents cars … A description of the class

* should be place here. Note that the description begins

* on the second line and that there is a space between

* the asterix and the text. Next we will add some fields

* indicating who the authors of the class are and

* other useful information. Notice the newline!

*

* @author Jerry Meng

* @version %I%, %G%

*/

public class Car {

注意JavaDoc結束和類開始間無空行。

方法被注釋如:

/**

* A description of what the method does…

*

* @param n a description of the parameter

* @return a description of the return value

*/

public int factorial(int n) {

某些不是全部,被JavaDoc注釋區域如:

/**

* Short description of the variable (one line)

*/

type variable;

什麼應當使用JavaDoc做注釋?如何注釋的恰當呢?

可以這樣想,JavaDoc中所作的注釋都可以在類的文檔中看到。所有讀這個類的文檔的讀者都會明白這個類所完成的功能、它包括的方法、如何使用這些方法及方法的返回值。一些作用域,比如public的變數或常量將會一目了然。任何不了解這個類內部結構的人都可以輕鬆的調用它。這便是你用JavaDoc可以輕鬆提供的信息。而使用一般注釋的地方,一般是給那些可能修改你的類代碼的程序員,它們一般描述了類的內部信息和結構。

下面我寫一下car的類來描述一個編程風格好的java類應該是怎樣的。當然這僅僅是一個小例子(apart from selector and mutator methods),僅僅是在考慮JAVA編程風格上一個參考而已。

import java.awt.Color;

/**

* This is a class representing cars. A car has certain features, such

* as color, age, number of doors etc and a car can be repainted,

* the tank can be filled etc.

*

* @author Jerry Meng

* @version %I%, %G%

*/

public class Car {

/**

* The maximum size of the tank in litres.

*/

private static final double TANK_SIZE = 100.0;

/**

* The color of the car.

*/

private Color color;

/**

* The age of the car.

*/

private int age;

/**

* The number of doors of the car.

*/

private int doors;

/**

* The amount of gasoline in the tank.

*/

private double gasoline;

/**

* Class constructor, which constructs a brand new, black car with

* five doors and a full tank.

*/

public Car() {

this(Color.black, 0, 5, TANK_SIZE);

}

/**

* Class constructor specifying the color, age, number of doors

* and litres of gasoline

*

* @param color The color of the car

* @param age The age of the car

* @param doors The number of doors

* @param km Kilometres driven

* @param gasoline The litres of gasoline

*/

public Car(Color color, int age, int doors, double gasoline) {

this.color = color;

this.age = age;

this.doors = doors;

this.gasoline = gasoline;

}

/**

* Returns the color of the car

*/

public Color getColor() {

return color;

}

/**

* Repaints the car (i.e. changes its color)

*/

public void setColor(Color color) {

this.color = color;

}

/**

* Returns the age of the car

*/

public int getAge() {

return age;

}

/**

* Returns the number of doors of the car

*/

public int getDoors() {

return doors;

}

/**

* Returns the amount of gasoline in the tank

*/

public double getGasoline() {

return gasoline;

}

/**

* Fills the tank. The amount of gasoline cannot exceed

* the size of the tank. In that case, the tank will be

* filled to the maximum and the rest will run out in

* the sand.

*

* @param gas The amount of gasoline to put in the tank

*/

public void setGasoline(double gas) {

if(gasoline + gas = TANK_SIZE)

gasoline+=gas;

else

gasoline = TANK_SIZE;

}

}

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

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

相關推薦

  • Java JsonPath 效率優化指南

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

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

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

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

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

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

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

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

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

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Python通配符有哪些

    Python通配符是一種表示字元串中模糊匹配的有效工具,用於匹配與具有特定模式匹配的字元串。Python中主要的通配符有:*,?,[]和{}。 一、星號通配符 * 在Python中…

    編程 2025-04-29

發表回復

登錄後才能評論