駝峯標識,.java
結尾html
統一爲UTF-8java
Transport...能夠解決property文件不能正常顯示爲中文的問題git
每個部分之間用一個空行隔開github
不換行(line-wrapped),一行寫完編程
// This is acceptable void doNothing() {} // This is equally acceptable void doNothingElse() { } // This is not acceptable: No concise empty blocks in a multi-block statement try { doSomething(); } catch (Exception e) {}
4個空格數組
列外狀況:app
究竟應該在哪裏折行?隨性,一個主要的指導是:最好在語法層面上折行ide
MyLambda<String, Long, Object> lambda = (String label, Long value, Object obj) -> { ... }; Predicate<String> predicate = str -> longExpressionInvolving(str);
垂直的空白測試
水平空白ui
關鍵字後面的小括號("(")之間要有一個空格做爲分隔,if,for,catch
關鍵字前面的大括號("}")之間要有一個空格做爲分隔,else, catch
左大括號("{")前面要有一個空格,兩個例外:
@SomeAnnotation({a, b})
(no space is used)String[][] x = {{"foo"}};
(no space is required between {{
)二元或者三元運算符先後都要有空格,包括相似運算符的符號,如:
<T extends Foo & Bar>
可是不包括:
在,:;
後面有空格,還有強轉的右括號後面")"
行末註釋"//"兩側都須要空格,多個是容許的,但不是必須的
在變量類型和聲明之間:List
數組初始化的大括號裏面,左大括號後面和右大括號前面的空格不是必須的
new int[] {5, 6}
and new int[] { 5, 6 }
are both valid
水平對齊所須要的空白:不須要
增長維護成本
便於理解運算順序,而沒必要記住Java優先級表
enum
若是元素有構造方法或者通常方法的狀況,元素之間能夠用空行隔開
private enum Answer { YES { @Override public String toString() { return "yes"; } }, NO, MAYBE }
若是沒有構造方法等能夠用下面的方式
private enum Suit { CLUBS, HEARTS, SPADES, DIAMONDS }
變量聲明
int a, b
;數組
new int[] { new int[] { 0, 1, 2, 3 0, } 1, 2, new int[] { 3, 0, 1, } 2, 3 } new int[] {0, 1, 2, 3}
String[] arr
,而不是String arr[]
switch語句
註解
註釋
多行註釋中第一行和最後一行不寫註釋
/* * This is // And so /* Or you can * okay. // is this. * even do this. */ */
修飾詞
Java中修飾詞的順序
public protected private abstract default static final transient volatile synchronized native strictfp
數字字面值
若是是long
類型的字面值,最後加"L",而不是"l",如:long length = 1000L;
僅僅使用ascii字符和數字,少數狀況使用下劃線(好比:常量命名,大寫,多個單詞之間使用下劃線隔開)
package:全小寫,不使用下劃線
class:
method:
constant:
很是量字段命名
形參名
局部變量命名
泛型參數
下面兩種方式中選一個
T
怎麼將多個單詞或者單詞短語轉換爲駝峯標識的命名方法
一些例子:
須要轉換的字符串 | 正確的 | 不正確的 |
"XML HTTP request" | XmlHttpRequest |
XMLHTTPRequest |
"new customer ID" | newCustomerId |
newCustomerID |
"inner stopwatch" | innerStopwatch |
innerStopWatch |
"supports IPv6 on iOS?" | supportsIpv6OnIos |
supportsIPv6OnIOS |
"YouTube importer" | YouTubeImporter YoutubeImporter |
@Override
須要catch異常,並作處理,若是沒有必要處理,要用註釋說明
Object.finalize
若是非要重寫,請閱讀並理解《Effective Java》裏面避免Finalizer
的部分
其餘在idea中的設置
統一爲"\n"
統一爲:tab 4 個空格
參考