真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

算數(shù)編碼代碼java 簡述算數(shù)編碼需要注意的問題

java編程規(guī)范?。?!

名稱 Java語言編碼規(guī)范(Java Code Conventions)

成都創(chuàng)新互聯(lián)自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元萬榮做網(wǎng)站,已為上家服務(wù),為萬榮各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

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

1 介紹

1.1 為什么要有編碼規(guī)范

1.2 版權(quán)聲明

2 文件名

2.1 文件后綴

2.2 常用文件名

3 文件組織

3.1 Java源文件

3.1.1 開頭注釋

3.1.2 包和引入語句

3.1.3 類和接口聲明

4 縮進(jìn)排版

4.1 行長度

4.2 換行

5 注釋

5.1 實(shí)現(xiàn)注釋的格式

5.1.1 塊注釋

5.1.2 單行注釋

5.1.3 尾端注釋

5.1.4 行末注釋

5.2 文擋注釋

6 聲明

6.1 每行聲明變量的數(shù)量

6.2 初始化

6.3 布局

6.4 類和接口的聲明

7 語句

7.1 簡單語句

7.2 復(fù)合語句

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 命名規(guī)范

10 編程慣例

10.1 提供對實(shí)例以及類變量的訪問控制

10.2 引用類變量和類方法

10.3 常量

10.4 變量賦值

10.5 其它慣例

10.5.1 圓括號

10.5.2 返回值

10.5.3 條件運(yùn)算符"?"前的表達(dá)式"?"前的表達(dá)式

10.5.4 特殊注釋

11 代碼范例

11.1 Java源文件范例

1 介紹(Introduction)

1.1 為什么要有編碼規(guī)范(Why Have Code Conventions)

編碼規(guī)范對于程序員而言尤為重要,有以下幾個(gè)原因:

- 一個(gè)軟件的生命周期中,80%的花費(fèi)在于維護(hù)

- 幾乎沒有任何一個(gè)軟件,在其整個(gè)生命周期中,均由最初的開發(fā)人員來維護(hù)

- 編碼規(guī)范可以改善軟件的可讀性,可以讓程序員盡快而徹底地理解新的代碼

- 如果你將源碼作為產(chǎn)品發(fā)布,就需要確任它是否被很好的打包并且清晰無誤,一如你已構(gòu)建的其它任何產(chǎn)品

為了執(zhí)行規(guī)范,每個(gè)軟件開發(fā)人員必須一致遵守編碼規(guī)范。每個(gè)人。

1.2 版權(quán)聲明(Acknowledgments)

本文檔反映的是Sun MicroSystems公司,Java語言規(guī)范中的編碼標(biāo)準(zhǔn)部分。主要貢獻(xiàn)者包括:Peter King,Patrick Naughton,Mike DeMoney,Jonni Kanerva,Kathy Walrath以及Scott Hommel。

本文檔現(xiàn)由Scott Hommel維護(hù),有關(guān)評論意見請發(fā)至shommel@eng.sun.com

2 文件名(File Names)

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

2.1 文件后綴(File Suffixes)

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

文件類別 文件后綴

Java源文件 .java

Java字節(jié)碼文件 .class

2.2 常用文件名(Common File Names)

常用的文件名包括:

文件名 用途

GNUmakefile makefiles的首選文件名。我們采用gnumake來創(chuàng)建(build)軟件。

README 概述特定目錄下所含內(nèi)容的文件的首選文件名

3 文件組織(File Organization)

一個(gè)文件由被空行分割而成的段落以及標(biāo)識每個(gè)段落的可選注釋共同組成。超過2000行的程序難以閱讀,應(yīng)該盡量避免。"Java源文件范例"提供了一個(gè)布局合理的Java程序范例。

3.1 Java源文件(Java Source Files)

每個(gè)Java源文件都包含一個(gè)單一的公共類或接口。若私有類和接口與一個(gè)公共類相關(guān)聯(lián),可以將它們和公共類放入同一個(gè)源文件。公共類必須是這個(gè)文件中的第一個(gè)類或接口。

Java源文件還遵循以下規(guī)則:

- 開頭注釋(參見"開頭注釋")

- 包和引入語句(參見"包和引入語句")

- 類和接口聲明(參見"類和接口聲明")

3.1.1 開頭注釋(Beginning Comments)

所有的源文件都應(yīng)該在開頭有一個(gè)C語言風(fēng)格的注釋,其中列出類名、版本信息、日期和版權(quán)聲明:

/*

* Classname

*

* Version information

*

* Date

*

* Copyright notice

*/

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

在多數(shù)Java源文件中,第一個(gè)非注釋行是包語句。在它之后可以跟引入語句。例如:

package java.awt;

import java.awt.peer.CanvasPeer;

3.1.3 類和接口聲明(Class and Interface Declarations)

下表描述了類和接口聲明的各個(gè)部分以及它們出現(xiàn)的先后次序。參見"Java源文件范例"中一個(gè)包含注釋的例子。

類/接口聲明的各部分 注解

1 類/接口文檔注釋(/**……*/) 該注釋中所需包含的信息,參見"文檔注釋"

2 類或接口的聲明

3 類/接口實(shí)現(xiàn)的注釋(/*……*/)如果有必要的話 該注釋應(yīng)包含任何有關(guān)整個(gè)類或接口的信息,而這些信息又不適合作為類/接口文檔注釋。

4 類的(靜態(tài))變量 首先是類的公共變量,隨后是保護(hù)變量,再后是包一級別的變量(沒有訪問修飾符,access modifier),最后是私有變量。

5 實(shí)例變量 首先是公共級別的,隨后是保護(hù)級別的,再后是包一級別的(沒有訪問修飾符),最后是私有級別的。

6 構(gòu)造器

7 方法 這些方法應(yīng)該按功能,而非作用域或訪問權(quán)限,分組。例如,一個(gè)私有的類方法可以置于兩個(gè)公有的實(shí)例方法之間。其目的是為了更便于閱讀和理解代碼。

4 縮進(jìn)排版(Indentation)

4個(gè)空格常被作為縮進(jìn)排版的一個(gè)單位??s進(jìn)的確切解釋并未詳細(xì)指定(空格 vs. 制表符)。一個(gè)制表符等于8個(gè)空格(而非4個(gè))。

4.1 行長度(Line Length)

盡量避免一行的長度超過80個(gè)字符,因?yàn)楹芏嘟K端和工具不能很好處理之。

注意:用于文檔中的例子應(yīng)該使用更短的行長,長度一般不超過70個(gè)字符。

4.2 換行(Wrapping Lines)

當(dāng)一個(gè)表達(dá)式無法容納在一行內(nèi)時(shí),可以依據(jù)如下一般規(guī)則斷開之:

- 在一個(gè)逗號后面斷開

- 在一個(gè)操作符前面斷開

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

- 新的一行應(yīng)該與上一行同一級別表達(dá)式的開頭處對齊

- 如果以上規(guī)則導(dǎo)致你的代碼混亂或者使你的代碼都堆擠在右邊,那就代之以縮進(jìn)8個(gè)空格。

以下是斷開方法調(diào)用的一些例子:

someMethod(longExpression1, longExpression2, longExpression3,

longExpression4, longExpression5);

var = someMethod1(longExpression1,

someMethod2(longExpression2,

longExpression3));

以下是兩個(gè)斷開算術(shù)表達(dá)式的例子。前者更好,因?yàn)閿嚅_處位于括號表達(dá)式的外邊,這是個(gè)較高級別的斷開。

longName1 = longName2 * (longName3 + longName4 - longName5)

+ 4 * longname6; //PREFFER

longName1 = longName2 * (longName3 + longName4

- longName5) + 4 * longname6; //AVOID

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

//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個(gè)空格的規(guī)則,因?yàn)槌R?guī)縮進(jìn)(4個(gè)空格)會使語句體看起來比較費(fèi)勁。比如:

//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();

}

這里有三種可行的方法用于處理三元運(yùn)算表達(dá)式:

alpha = (aLongBooleanExpression) ? beta : gamma;

alpha = (aLongBooleanExpression) ? beta

: gamma;

alpha = (aLongBooleanExpression)

? beta

: gamma;

5 注釋(Comments)

Java程序有兩類注釋:實(shí)現(xiàn)注釋(implementation comments)和文檔注釋(document comments)。實(shí)現(xiàn)注釋是那些在C++中見過的,使用/*...*/和//界定的注釋。文檔注釋(被稱為"doc comments")是Java獨(dú)有的,并由/**...*/界定。文檔注釋可以通過javadoc工具轉(zhuǎn)換成HTML文件。

實(shí)現(xiàn)注釋用以注釋代碼或者實(shí)現(xiàn)細(xì)節(jié)。文檔注釋從實(shí)現(xiàn)自由(implementation-free)的角度描述代碼的規(guī)范。它可以被那些手頭沒有源碼的開發(fā)人員讀懂。

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

在注釋里,對設(shè)計(jì)決策中重要的或者不是顯而易見的地方進(jìn)行說明是可以的,但應(yīng)避免提供代碼中己清晰表達(dá)出來的重復(fù)信息。多余的的注釋很容易過時(shí)。通常應(yīng)避免那些代碼更新就可能過時(shí)的注釋。

注意:頻繁的注釋有時(shí)反映出代碼的低質(zhì)量。當(dāng)你覺得被迫要加注釋的時(shí)候,考慮一下重寫代碼使其更清晰。

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

5.1 實(shí)現(xiàn)注釋的格式(Implementation Comment Formats)

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

5.1.1 塊注釋(Block Comments)

塊注釋通常用于提供對文件,方法,數(shù)據(jù)結(jié)構(gòu)和算法的描述。塊注釋被置于每個(gè)文件的開始處以及每個(gè)方法之前。它們也可以被用于其他地方,比如方法內(nèi)部。在功能和方法內(nèi)部的塊注釋應(yīng)該和它們所描述的代碼具有一樣的縮進(jìn)格式。

塊注釋之首應(yīng)該有一個(gè)空行,用于把塊注釋和代碼分割開來,比如:

/*

* Here is a block comment.

*/

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

/*-

* Here is a block comment with some very special

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

*

* one

* two

* three

*/

注意:如果你不使用indent(1),就不必在代碼中使用/*-,或?yàn)樗丝赡軐δ愕拇a運(yùn)行indent(1)作讓步。

參見"文檔注釋"

5.1.2 單行注釋(Single-Line Comments)

短注釋可以顯示在一行內(nèi),并與其后的代碼具有一樣的縮進(jìn)層級。如果一個(gè)注釋不能在一行內(nèi)寫完,就該采用塊注釋(參見"塊注釋")。單行注釋之前應(yīng)該有一個(gè)空行。以下是一個(gè)Java代碼中單行注釋的例子:

if (condition) {

/* Handle the condition. */

...

}

5.1.3 尾端注釋(Trailing Comments)

極短的注釋可以與它們所要描述的代碼位于同一行,但是應(yīng)該有足夠的空白來分開代碼和注釋。若有多個(gè)短注釋出現(xiàn)于大段代碼中,它們應(yīng)該具有相同的縮進(jìn)。

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

if (a == 2) {

return TRUE; /* special case */

} else {

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

}

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

注釋界定符"http://",可以注釋掉整行或者一行中的一部分。它一般不用于連續(xù)多行的注釋文本;然而,它可以用來注釋掉連續(xù)多行的代碼段。以下是所有三種風(fēng)格的例子:

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",其中包含了有關(guān)文檔注釋標(biāo)記的信息(@return, @param, @see):

若想了解更多有關(guān)文檔注釋和javadoc的詳細(xì)資料,參見javadoc的主頁:

文檔注釋描述Java的類、接口、構(gòu)造器,方法,以及字段(field)。每個(gè)文檔注釋都會被置于注釋定界符/**...*/之中,一個(gè)注釋對應(yīng)一個(gè)類、接口或成員。該注釋應(yīng)位于聲明之前:

/**

* The Example class provides ...

*/

public class Example { ...

注意頂層(top-level)的類和接口是不縮進(jìn)的,而其成員是縮進(jìn)的。描述類和接口的文檔注釋的第一行(/**)不需縮進(jìn);隨后的文檔注釋每行都縮進(jìn)1格(使星號縱向?qū)R)。成員,包括構(gòu)造函數(shù)在內(nèi),其文檔注釋的第一行縮進(jìn)4格,隨后每行都縮進(jìn)5格。

若你想給出有關(guān)類、接口、變量或方法的信息,而這些信息又不適合寫在文檔中,則可使用實(shí)現(xiàn)塊注釋(見5.1.1)或緊跟在聲明后面的單行注釋(見5.1.2)。例如,有關(guān)一個(gè)類實(shí)現(xiàn)的細(xì)節(jié),應(yīng)放入緊跟在類聲明后面的實(shí)現(xiàn)塊注釋中,而不是放在文檔注釋中。

文檔注釋不能放在一個(gè)方法或構(gòu)造器的定義塊中,因?yàn)镴ava會將位于文檔注釋之后的第一個(gè)聲明與其相關(guān)聯(lián)。

6 聲明(Declarations)

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

推薦一行一個(gè)聲明,因?yàn)檫@樣以利于寫注釋。亦即,

int level; // indentation level

int size; // size of table

要優(yōu)于,

int level, size;

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

int foo, fooarray[]; //WRONG!

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

int level; // indentation level

int size; // size of table

Object currentEntry; // currently selected table entry

6.2 初始化(Initialization)

盡量在聲明局部變量的同時(shí)初始化。唯一不這么做的理由是變量的初始值依賴于某些先前發(fā)生的計(jì)算。

6.3 布局(Placement)

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

void myMethod() {

int int1 = 0; // beginning of method block

if (condition) {

int int2 = 0; // beginning of "if" block

...

}

}

該規(guī)則的一個(gè)例外是for循環(huán)的索引變量

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

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

int count;

...

myMethod() {

if (condition) {

int count = 0; // AVOID!

...

}

...

}

6.4 類和接口的聲明(Class and Interface Declarations)

當(dāng)編寫類和接口是,應(yīng)該遵守以下格式規(guī)則:

- 在方法名與其參數(shù)列表之前的左括號"("間不要有空格

- 左大括號"{"位于聲明語句同行的末尾

- 右大括號"}"另起一行,與相應(yīng)的聲明語句對齊,除非是一個(gè)空語句,"}"應(yīng)緊跟在"{"之后

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 復(fù)合語句(Compound Statements)

復(fù)合語句是包含在大括號中的語句序列,形如"{ 語句 }"。例如下面各段。

- 被括其中的語句應(yīng)該較之復(fù)合語句縮進(jìn)一個(gè)層次

- 左大括號"{"應(yīng)位于復(fù)合語句起始行的行尾;右大括號"}"應(yīng)另起一行并與復(fù)合語句首行對齊。

- 大括號可以被用于所有語句,包括單個(gè)語句,只要這些語句是諸如if-else或for控制結(jié)構(gòu)的一部分。這樣便于添加語句而無需擔(dān)心由于忘了加括號而引入bug。

7.3 返回語句(return Statements)

一個(gè)帶返回值的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語句應(yīng)該具有如下格式:

if (condition) {

statements;

}

if (condition) {

statements;

} else {

statements;

}

if (condition) {

statements;

} else if (condition) {

statements;

} else{

statements;

}

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

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

statement;

7.5 for語句(for Statements)

一個(gè)for語句應(yīng)該具有如下格式:

for (initialization; condition; update) {

statements;

}

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

for (initialization; condition; update);

當(dāng)在for語句的初始化或更新子句中使用逗號時(shí),避免因使用三個(gè)以上變量,而導(dǎo)致復(fù)雜度提高。若需要,可以在for循環(huán)之前(為初始化子句)或for循環(huán)末尾(為更新子句)使用單獨(dú)的語句。

7.6 while語句(while Statements)

一個(gè)while語句應(yīng)該具有如下格式

while (condition) {

statements;

}

一個(gè)空的while語句應(yīng)該具有如下格式:

while (condition);

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

一個(gè)do-while語句應(yīng)該具有如下格式:

do {

statements;

} while (condition);

7.8 switch語句(switch Statements)

一個(gè)switch語句應(yīng)該具有如下格式:

switch (condition) {

case ABC:

statements;

/* falls through */

case DEF:

statements;

break;

case XYZ:

statements;

break;

default:

statements;

break;

}

每當(dāng)一個(gè)case順著往下執(zhí)行時(shí)(因?yàn)闆]有break語句),通常應(yīng)在break語句的位置添加注釋。上面的示例代碼中就包含注釋/* falls through */。

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

一個(gè)try-catch語句應(yīng)該具有如下格式:

try {

statements;

} catch (ExceptionClass e) {

statements;

}

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

try {

statements;

} catch (ExceptionClass e) {

statements;

} finally {

statements;

}

8 空白(White Space)

8.1 空行(Blank Lines)

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

下列情況應(yīng)該總是使用兩個(gè)空行:

- 一個(gè)源文件的兩個(gè)片段(section)之間

- 類聲明和接口聲明之間

下列情況應(yīng)該總是使用一個(gè)空行:

- 兩個(gè)方法之間

- 方法內(nèi)的局部變量和方法的第一條語句之間

- 塊注釋(參見"5.1.1")或單行注釋(參見"5.1.2")之前

- 一個(gè)方法內(nèi)的兩個(gè)邏輯段之間,用以提高可讀性

8.2 空格(Blank Spaces)

下列情況應(yīng)該使用空格:

- 一個(gè)緊跟著括號的關(guān)鍵字應(yīng)該被空格分開,例如:

while (true) {

...

}

注意:空格不應(yīng)該置于方法名與其左括號之間。這將有助于區(qū)分關(guān)鍵字和方法調(diào)用。

- 空白應(yīng)該位于參數(shù)列表中逗號的后面

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

a += c + d;

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

while (d++ = s++) {

n++;

}

printSize("size is " + foo + "\n");

- for語句中的表達(dá)式應(yīng)該被空格分開,例如:

for (expr1; expr2; expr3)

- 強(qiáng)制轉(zhuǎn)型后應(yīng)該跟一個(gè)空格,例如:

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

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

9 命名規(guī)范(Naming Conventions)

命名規(guī)范使程序更易讀,從而更易于理解。它們也可以提供一些有關(guān)標(biāo)識符功能的信息,以助于理解代碼,例如,不論它是一個(gè)常量,包,還是類。

標(biāo)識符類型 命名規(guī)則 例子

包(Packages) 一個(gè)唯一包名的前綴總是全部小寫的ASCII字母并且是一個(gè)頂級域名,通常是com,edu,gov,mil,net,org,或1981年ISO 3166標(biāo)準(zhǔn)所指定的標(biāo)識國家的英文雙字符代碼。包名的后續(xù)部分根據(jù)不同機(jī)構(gòu)各自內(nèi)部的命名規(guī)范而不盡相同。這類命名規(guī)范可能以特定目錄名的組成來區(qū)分部門(department),項(xiàng)目(project),機(jī)器(machine),或注冊名(login names)。 com.sun.eng

com.apple.quicktime.v2

edu.cmu.cs.bovik.cheese

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

class ImageSprite;

接口(Interfaces) 命名規(guī)則:大小寫規(guī)則與類名相似 interface RasterDelegate;

interface Storing;

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

runFast();

getBackground();

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

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

int i;

float myWidth;

實(shí)例變量(Instance Variables) 大小寫規(guī)則和變量名相似,除了前面需要一個(gè)下劃線 int _employeeId;

String _name;

Customer _customer;

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

static final int MAX_WIDTH = 999;

static final int GET_THE_CPU = 1;

10 編程慣例(Programming Practices)

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

若沒有足夠理由,不要把實(shí)例或類變量聲明為公有。通常,實(shí)例變量無需顯式的設(shè)置(set)和獲取(gotten),通常這作為方法調(diào)用的邊緣效應(yīng) (side effect)而產(chǎn)生。

一個(gè)具有公有實(shí)例變量的恰當(dāng)例子,是類僅作為數(shù)據(jù)結(jié)構(gòu),沒有行為。亦即,若你要使用一個(gè)結(jié)構(gòu)(struct)而非一個(gè)類(如果java支持結(jié)構(gòu)的話),那么把類的實(shí)例變量聲明為公有是合適的。

JAVA中byte類型的介紹。 謝謝

Java也提供了一個(gè)byte數(shù)據(jù)類型,并且是基本類型。java byte是做為最小的數(shù)字來處理的,因此它的值域被定義為-128~127,也就是signed byte。

byte,即字節(jié),由8位的二進(jìn)制組成。在Java中,byte類型的數(shù)據(jù)是8位帶符號的二進(jìn)制數(shù)。

在計(jì)算機(jī)中,8位帶符號二進(jìn)制數(shù)的取值范圍是[-128, 127],所以在Java中,byte類型的取值范圍也是[-128, 127]。

運(yùn)算規(guī)則:

####正數(shù)的最高位都是 0 ,正數(shù)的值就是二進(jìn)制表示的值。 ####

####負(fù)數(shù)的最高位都是 1 ,負(fù)數(shù)的值是 取反后加一 然后加個(gè)負(fù)號得到得值。 ####

用8位的二進(jìn)制來說明此規(guī)則:

比如:00000001。最高位是0 為正數(shù) ,那么表示的就是 十進(jìn)制的 1。

再比如:10000001.最高位是1 為負(fù)數(shù),值是多少?取反得到 01111110 加1 得到 01111111 ,那么值為 -127

理解此運(yùn)算規(guī)則我們正式開始說byte,byte正好是8位的二進(jìn)制數(shù)。short是16位 int是32位 long是64位。

上述代碼,最后會輸出-56。原因如下:

200的二進(jìn)制表示是111001000,由于int是32位的二進(jìn)制,所以在計(jì)算機(jī)中,實(shí)際上是00000000000……111001000,當(dāng)int轉(zhuǎn)成byte的時(shí)候,那么計(jì)算機(jī)會只保留最后8位,即11001000。

然后11001000的最高位是1,那么表示是一個(gè)負(fù)數(shù),而負(fù)數(shù)在計(jì)算機(jī)中都是以補(bǔ)碼的形式保存的,所以我們計(jì)算11001000的原碼為00111000,即56,所以11001000表示的是-56,所以最后test的值為-56。

擴(kuò)展資料

Java編譯程序生成字節(jié)碼(byte-code),而不是通常的機(jī)器碼。Java字節(jié)碼提供對體系結(jié)構(gòu)中性的目標(biāo)文件格式,代碼設(shè)計(jì)成可有效地傳送程序到多個(gè)平臺。Java程序可以在任何實(shí)現(xiàn)了Java解釋程序和運(yùn)行系統(tǒng)(run-time system)的系統(tǒng)上運(yùn)行。

在一個(gè)解釋性的環(huán)境中,程序開發(fā)的標(biāo)準(zhǔn)“鏈接”階段大大消失了。如果說Java還有一個(gè)鏈接階段,它只是把新類裝進(jìn)環(huán)境的過程,它是增量式的、輕量級的過程。

因此,Java支持快速原型和容易試驗(yàn),它將導(dǎo)致快速程序開發(fā)。這是一個(gè)與傳統(tǒng)的、耗時(shí)的“編譯、鏈接和測試”形成鮮明對比的精巧的開發(fā)過程。

參考資料來源:百度百科—Java(計(jì)算機(jī)編程語言)

java運(yùn)算

public static void main(String[] args)

{

Scanner input=new Scanner(System.in);

int num=1;

int countRight=0;

int countError=0;

while(num5){

Random rnd = new Random();

int num1=rnd.nextInt(100);

int num2=rnd.nextInt(100);

System.out.println("問題:"+num1+"+"+num2+"=");

System.out.print("請輸入答案:");

int answer=input.nextInt();

int total=num1+num2;

if(answer==total){

countRight++;

}else{

countError++;

}

num++;

}

System.out.println("您答對了"+countRight+"道題,答錯(cuò)了"+countError+"道題。");

}

怎么用JAVA代碼實(shí)現(xiàn)驗(yàn)證郵箱地址是否合法

正則表達(dá)式30分鐘入門

元字符:

\b 代表著單詞的開頭或結(jié)尾,也就是單詞的分界處.如果要精確地查找hi這個(gè)單詞的話,我們應(yīng)該使用\bhi\b.

.是另一個(gè)元字符,匹配除了換行符以外的任意字符,*同樣是元字符,它指定*前邊的內(nèi)容可以重復(fù)任意次以使整個(gè)表達(dá)式得到匹配。

.*連在一起就意味著任意數(shù)量的不包含換行的字符。

\d是一個(gè)新的元字符,匹配任意的數(shù)字,0\d\d-\d\d\d\d\d\d\d\d也就是中國的電話號碼.為了避免那么多煩人的重復(fù),我們也可以這樣寫這個(gè)表達(dá)式:0\d{2}-\d{8}。

\s匹配任意的空白符,包括空格,制表符(Tab),換行符,中文全角空格等。\w匹配字母或數(shù)字或下劃線或漢字。

\b\w{6}\b 匹配剛好6個(gè)字母/數(shù)字的單詞。

字符轉(zhuǎn)義:使用\來取消這些字符的特殊意義。因此,你應(yīng)該使用\.和\*。當(dāng)然,要查找\本身,你也得用\\。

代碼 說明

. 匹配除換行符以外的任意字符

\w 匹配字母或數(shù)字或下劃線或漢字

\s 匹配任意的空白符

\d 匹配數(shù)字

\b 匹配單詞的開始或結(jié)束

^ 匹配字符串的開始

$ 匹配字符串的結(jié)束

重復(fù):

常用的限定符

代碼/語法 說明

* 重復(fù)零次或更多次

+ 重復(fù)一次或更多次

? 重復(fù)零次或一次

{n} 重復(fù)n次

{n,} 重復(fù)n次或更多次

{n,m} 重復(fù)n到m次

要想查找數(shù)字,字母或數(shù)字,你只需要在中括號里列出它們就行了,像[aeiou]就匹配任何一個(gè)元音字母,[.?!]匹配標(biāo)點(diǎn)符號(.或?或!)

反義:

常用的反義代碼

代碼/語法 說明

\W 匹配任意不是字母,數(shù)字,下劃線,漢字的字符

\S 匹配任意不是空白符的字符

\D 匹配任意非數(shù)字的字符

\B 匹配不是單詞開頭或結(jié)束的位置

[^x] 匹配除了x以外的任意字符

[^aeiou] 匹配除了aeiou這幾個(gè)字母以外的任意字符

替換:

正則表達(dá)式里的替換指的是有幾種規(guī)則,如果滿足其中任意一種規(guī)則都應(yīng)該當(dāng)成匹配,具體方法是用|把不同的規(guī)則分隔開。

0\d{2}-\d{8}|0\d{3}-\d{7}這個(gè)表達(dá)式能匹配兩種以連字號分隔的電話號碼:一種是三位區(qū)號,8位本地號(如010-12345678),一種是4位區(qū)號,7位本地號(0376-2233445)。

\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}這個(gè)表達(dá)式匹配3位區(qū)號的電話號碼,其中區(qū)號可以用小括號括起來,也可以不用,區(qū)號與本地號間可以用連字號或空格間隔,也可以沒有間隔。你可以試試用替換|把這個(gè)表達(dá)式擴(kuò)展成也支持4位區(qū)號的。

\d{5}-\d{4}|\d{5}這個(gè)表達(dá)式用于匹配美國的郵政編碼。美國郵編的規(guī)則是5位數(shù)字,或者用連字號間隔的9位數(shù)字。之所以要給出這個(gè)例子是因?yàn)樗苷f明一個(gè)問題:使用替換時(shí),順序是很重要的。如果你把它改成\d{5}|\d{5}-\d{4}的話,那么就只會匹配5位的郵編(以及9位郵編的前5位)。原因是匹配替換時(shí),將會從左到右地測試每個(gè)分枝條件,如果滿足了某個(gè)分枝的話,就不會去管其它的替換條件了。

分組:

如果想要重復(fù)一個(gè)字符串又該怎么辦?你可以用小括號來指定子表達(dá)式(也叫做分組),然后你就可以指定這個(gè)子表達(dá)式的重復(fù)次數(shù)了。

(\d{1,3}\.){3}\d{1,3}是一個(gè)簡單的IP地址匹配表達(dá)式。要理解這個(gè)表達(dá)式,請按下列順序分析它:\d{1,3}匹配1到3位的數(shù)字,(\d{1,3}\.}{3}匹配三位數(shù)字加上一個(gè)英文句號(這個(gè)整體也就是這個(gè)分組)重復(fù)3次,最后再加上一個(gè)一到三位的數(shù)字(\d{1,3})。不幸的是,它也將匹配256.300.888.999這種不可能存在的IP地址(IP地址中每個(gè)數(shù)字都不能大于255)。如果能使用算術(shù)比較的話,或許能簡單地解決這個(gè)問題,但是正則表達(dá)式中并不提供關(guān)于數(shù)學(xué)的任何功能,所以只能使用冗長的分組,選擇,字符類來描述一個(gè)正確的IP地址:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)。

后向引用:

后向引用用于重復(fù)搜索前面某個(gè)分組匹配的文本。例如,\1代表分組1匹配的文本。難以理解?請看示例:

\b(\w+)\b\s+\1\b可以用來匹配重復(fù)的單詞,像go go, kitty kitty。首先是一個(gè)單詞,也就是單詞開始處和結(jié)束處之間的多于一個(gè)的字母或數(shù)字(\b(\w+)\b),然后是1個(gè)或幾個(gè)空白符(\s+,最后是前面匹配的那個(gè)單詞(\1)。

懶惰限定符

*? 重復(fù)任意次,但盡可能少重復(fù)

+? 重復(fù)1次或更多次,但盡可能少重復(fù)

?? 重復(fù)0次或1次,但盡可能少重復(fù)

{n,m}? 重復(fù)n到m次,但盡可能少重復(fù)

{n,}? 重復(fù)n次以上,但盡可能少重復(fù)

位置指定:

接下來的四個(gè)用于查找在某些內(nèi)容(但并不包括這些內(nèi)容)之前或之后的東西,也就是說它們用于指定一個(gè)位置,就像\b,^,$那樣,因此它們也被稱為零寬斷言。最好還是拿例子來說明吧:

(?=exp)也叫零寬先行斷言,它匹配文本中的某些位置,這些位置的后面能匹配給定的后綴exp。比如\b\w+(?=ing\b),匹配以ing結(jié)尾的單詞的前面部分(除了ing以外的部分),如果在查找I'm singing while you're dancing.時(shí),它會匹配sing和danc。

(?=exp)也叫零寬后行斷言,它匹配文本中的某些位置,這些位置的前面能給定的前綴匹配exp。比如(?=\bre)\w+\b會匹配以re開頭的單詞的后半部分(除了re以外的部分),例如在查找reading a book時(shí),它匹配ading。

假如你想要給一個(gè)很長的數(shù)字中每三位間加一個(gè)逗號(當(dāng)然是從右邊加起了),你可以這樣查找需要在前面和里面添加逗號的部分:((?=\d)\d{3})*\b。請仔細(xì)分析這個(gè)表達(dá)式,它可能不像你第一眼看出來的那么簡單。

下面這個(gè)例子同時(shí)使用了前綴和后綴:(?=\s)\d+(?=\s)匹配以空白符間隔的數(shù)字(再次強(qiáng)調(diào),不包括這些空白符)。

負(fù)向位置指定:

前面我們提到過怎么查找不是某個(gè)字符或不在某個(gè)字符類里的字符的方法(反義)。但是如果我們只是想要確保某個(gè)字符沒有出現(xiàn),但并不想去匹配它時(shí)怎么辦?例如,如果我們想查找這樣的單詞--它里面出現(xiàn)了字母q,但是q后面跟的不是字母u,我們可以嘗試這樣:

\b\w*q[^u]\w*\b匹配包含后面不是字母u的字母q的單詞。但是如果多做測試(或者你思維足夠敏銳,直接就觀察出來了),你會發(fā)現(xiàn),如果q出現(xiàn)在單詞的結(jié)尾的話,像Iraq,Benq,這個(gè)表達(dá)式就會出錯(cuò)。這是因?yàn)閇^u]總是匹配一個(gè)字符,所以如果q是單詞的最后一個(gè)字符的話,后面的[^u]將會匹配q后面的單詞分隔符(可能是空格,或者是句號或其它的什么),后面的\w+\b將會匹配下一個(gè)單詞,于是\b\w*q[^u]\w*\b就能匹配整個(gè)Iraq fighting。負(fù)向位置指定能解決這樣的問題,因?yàn)樗黄ヅ湟粋€(gè)位置,并不消費(fèi)任何字符?,F(xiàn)在,我們可以這樣來解決這個(gè)問題:\b\w*q(?!u)\w*\b。

零寬負(fù)向先行斷言(?!exp),只會匹配后綴exp不存在的位置。\d{3}(?!\d)匹配三位數(shù)字,而且這三位數(shù)字的后面不能是數(shù)字。

同理,我們可以用(?!exp),零寬負(fù)向后行斷言來查找前綴exp不存在的位置:(?![a-z])\d{7}匹配前面不是小寫字母的七位數(shù)字(實(shí)驗(yàn)時(shí)發(fā)現(xiàn)錯(cuò)誤?注意你的“區(qū)分大小寫”先項(xiàng)是否選中)。

一個(gè)更復(fù)雜的例子:(?=(\w+)).*(?=\/\1)匹配不包含屬性的簡單HTML標(biāo)簽內(nèi)里的內(nèi)容。(?(\w+))指定了這樣的前綴:被尖括號括起來的單詞(比如可能是b),然后是.*(任意的字符串),最后是一個(gè)后綴(?=\/\1)。注意后綴里的\/,它用到了前面提過的字符轉(zhuǎn)義;\1則是一個(gè)反向引用,引用的正是捕獲的第一組,前面的(\w+)匹配的內(nèi)容,這樣如果前綴實(shí)際上是b的話,后綴就是/b了。整個(gè)表達(dá)式匹配的是b和/b之間的內(nèi)容(再次提醒,不包括前綴和后綴本身)。

注釋:

小括號的另一種用途是能過語法(?#comment)來包含注釋。例如:2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)。

要包含注釋的話,最好是啟用“忽略模式里的空白符”選項(xiàng),這樣在編寫表達(dá)式時(shí)能任意的添加空格,Tab,換行,而實(shí)際使用時(shí)這些都將被忽略。啟用這個(gè)選項(xiàng)后,在#后面到這一行結(jié)束的所有文本都將被當(dāng)成注釋忽略掉。

例如,我們可以前面的一個(gè)表達(dá)式寫成這樣:

(?= # 查找前綴,但不包含它

(\w+) # 查找尖括號括起來的字母或數(shù)字(標(biāo)簽)

) # 前綴結(jié)束

.* # 匹配任意文本

(?= # 查找后綴,但不包含它

\/\1 # 查找尖括號括起來的內(nèi)容:前面是一個(gè)"/",后面是先前捕獲的標(biāo)簽

) # 后綴結(jié)束

貪婪與懶惰:

當(dāng)正則表達(dá)式中包含能接受重復(fù)的限定符(指定數(shù)量的代碼,例如*,{5,12}等)時(shí),通常的行為是(在使整個(gè)表達(dá)式能得到匹配的前提下)匹配盡可能多的字符??紤]這個(gè)表達(dá)式:a.*b,它將會匹配最長的以a開始,以b結(jié)束的字符串。如果用它來搜索aabab的話,它會匹配整個(gè)字符串a(chǎn)abab。這被稱為貪婪匹配。

有時(shí),我們更需要懶惰匹配,也就是匹配盡可能少的字符。前面給出的限定符都可以被轉(zhuǎn)化為懶惰匹配模式,只要在它后面加上一個(gè)問號?。這樣.*?就意味著匹配任意數(shù)量的重復(fù),但是在能使整個(gè)匹配成功的前提下使用最少的重復(fù)。現(xiàn)在看看懶惰版的例子吧:

a.*?b匹配最短的,以a開始,以b結(jié)束的字符串。如果把它應(yīng)用于aabab的話,它會匹配aab和ab(為什么第一個(gè)匹配是aab而不是ab?簡單地說,最先開始的區(qū)配最有最大的優(yōu)先權(quán)——The Match That Begins Earliest Wins)。

表5.懶惰限定符 *? 重復(fù)任意次,但盡可能少重復(fù)

+? 重復(fù)1次或更多次,但盡可能少重復(fù)

?? 重復(fù)0次或1次,但盡可能少重復(fù)

{n,m}? 重復(fù)n到m次,但盡可能少重復(fù)

{n,}? 重復(fù)n次以上,但盡可能少重復(fù)

-------------------------------------------------------

下面是一些常用的正則表達(dá)式:

匹配中文字符的正則表達(dá)式: [\u4e00-\u9fa5]

評注:匹配中文還真是個(gè)頭疼的事,有了這個(gè)表達(dá)式就好辦了

匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]

評注:可以用來計(jì)算字符串的長度(一個(gè)雙字節(jié)字符長度計(jì)2,ASCII字符計(jì)1)

匹配空白行的正則表達(dá)式:\n\s*\r

評注:可以用來刪除空白行

匹配HTML標(biāo)記的正則表達(dá)式:(\S*?)[^]*.*?/\1|.*? /

評注:網(wǎng)上流傳的版本太糟糕,上面這個(gè)也僅僅能匹配部分,對于復(fù)雜的嵌套標(biāo)記依舊無能為力

匹配首尾空白字符的正則表達(dá)式:^\s*|\s*$

評注:可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁符等等),非常有用的表達(dá)式

匹配Email地址的正則表達(dá)式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

評注:表單驗(yàn)證時(shí)很實(shí)用

匹配網(wǎng)址URL的正則表達(dá)式:[a-zA-z]+://[^\s]*

評注:網(wǎng)上流傳的版本功能很有限,上面這個(gè)基本可以滿足需求

匹配帳號是否合法(字母開頭,允許5-16字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

評注:表單驗(yàn)證時(shí)很實(shí)用

匹配國內(nèi)電話號碼:\d{3}-\d{8}|\d{4}-\d{7}

評注:匹配形式如 0511-4405222 或 021-87888822

匹配騰訊QQ號:[1-9][0-9]{4,}

評注:騰訊QQ號從10000開始

匹配中國郵政編碼:[1-9]\d{5}(?!\d)

評注:中國郵政編碼為6位數(shù)字

匹配身份證:\d{15}|\d{18}

評注:中國的身份證為15位或18位

匹配ip地址:\d+\.\d+\.\d+\.\d+

評注:提取ip地址時(shí)有用

匹配特定數(shù)字:

^[1-9]\d*$ //匹配正整數(shù)

^-[1-9]\d*$ //匹配負(fù)整數(shù)

^-?[1-9]\d*$ //匹配整數(shù)

^[1-9]\d*|0$ //匹配非負(fù)整數(shù)(正整數(shù) + 0)

^-[1-9]\d*|0$ //匹配非正整數(shù)(負(fù)整數(shù) + 0)

^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮點(diǎn)數(shù)

^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配負(fù)浮點(diǎn)數(shù)

^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮點(diǎn)數(shù)

^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非負(fù)浮點(diǎn)數(shù)(正浮點(diǎn)數(shù) + 0)

^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮點(diǎn)數(shù)(負(fù)浮點(diǎn)數(shù) + 0)

評注:處理大量數(shù)據(jù)時(shí)有用,具體應(yīng)用時(shí)注意修正

匹配特定字符串:

^[A-Za-z]+$ //匹配由26個(gè)英文字母組成的字符串

^[A-Z]+$ //匹配由26個(gè)英文字母的大寫組成的字符串

^[a-z]+$ //匹配由26個(gè)英文字母的小寫組成的字符串

^[A-Za-z0-9]+$ //匹配由數(shù)字和26個(gè)英文字母組成的字符串

^\w+$ //匹配由數(shù)字、26個(gè)英文字母或者下劃線組成的字符串

評注:最基本也是最常用的一些表達(dá)式

java基礎(chǔ)都有那些?

一、標(biāo)識符

java對各種變量、方法和類等要素命名時(shí)使用的字符序列成為標(biāo)識符;通俗點(diǎn),凡是自己可以起名字的地方都叫標(biāo)識符,都遵守標(biāo)識符的規(guī)則

1.標(biāo)識符命名規(guī)則:

1)標(biāo)識符由字符、下劃線、美元符或數(shù)字組成。

2)標(biāo)識符應(yīng)以字符、下劃線、美元符開頭

3)java標(biāo)識符大小寫敏感,長度無限制

4)約定俗成,java標(biāo)識符選取應(yīng)該注意“見名知意”且不能與java語言的關(guān)鍵字(eclipes中帶顏色的基本都是關(guān)鍵字)重名

二、關(guān)鍵字

java中一些賦以特定含義,用作專門用途的關(guān)鍵的字符串成為關(guān)鍵字(keyword);且大多數(shù)編輯器都會將關(guān)鍵字用特殊方式標(biāo)出 所有java關(guān)鍵字都是小寫英文

一些常用關(guān)鍵字:

三、java的基本數(shù)據(jù)類型

1.java常量

java的常量值用字符串表示,區(qū)分為不同的數(shù)據(jù)類型。如:整型常量:1234實(shí)型常量:3.14字符常量:’a’邏輯常量:true、false字符串常量:”HelloWorld”

注意:

1)區(qū)分字符常量和字符串常量

字符常量是單引號引起來的單個(gè),字符串常量是雙引號引起來的不限長度

由于java采用Unicode編碼,每個(gè)字符占兩個(gè)字節(jié),因而可用天十六進(jìn)制編碼形式表示,當(dāng)然也可以用一個(gè)中文表示(單個(gè)中文占用兩個(gè)字節(jié))

2)”常量”這個(gè)名次還會用在另外其他語境中表示值不可變的變量

2.java變量

java變量是程序中最基本的存儲單元,其要素包括變量名,變量類型和作用域。java程序中每一個(gè)變量都屬于特定的數(shù)據(jù)類型,在使用前必需對其進(jìn)行聲明,聲明格式為:type varName [=value]例如:int i =100;foloat f=12.3f;double d1,d2,d3=0.123;(聲明了三個(gè)變量,其中d1,d2是默認(rèn)值,d3=0.123)String s=”hello”

從本質(zhì)上講,變量其實(shí)是內(nèi)存中的一小塊區(qū)域,使用變量名來訪問這塊區(qū)域,因此,每一個(gè)變量使用前必需先聲明,然后必需進(jìn)行賦值,才能使用。

1)java變量分類

按被聲明的位置劃分:

局部變量:方法或語句塊內(nèi)部定義的變量,只能在被定義的方法或語句塊內(nèi)使用

成員變量:方法外部、類的內(nèi)部定義的變量,可以在整個(gè)類中使用,包括類里的方法或語句塊內(nèi)也可以使用

注意:類外面是不能有變量的聲明的

按所屬的數(shù)據(jù)類型劃分:

基本數(shù)據(jù)類型變量

引用數(shù)據(jù)類型變量

四、運(yùn)算符

java語言支持如下運(yùn)算符:

算術(shù)運(yùn)算符:+ - * / % ++ --

關(guān)系運(yùn)算符: = = == !=

邏輯運(yùn)算符:! | ^ ||

位運(yùn)算符: | ^ ~

賦值運(yùn)算符:=

拓展賦值運(yùn)算符:+ = -= *= /=

字符串鏈接運(yùn)算符:+

三目條件運(yùn)算符 ? :

1.算數(shù)運(yùn)算符

注意:

1)

位運(yùn)算符中的!、、|、^跟羅技運(yùn)算符相同,只是位運(yùn)算符是對變量的二進(jìn)制進(jìn)行操作,我個(gè)人是用不到的,所以不在這里多做介紹

2)

++(—)

在前時(shí)先運(yùn)算再取值

在后時(shí)先取值再運(yùn)算

2.邏輯運(yùn)算符

例如:

3.擴(kuò)展賦值運(yùn)算符

4.字符串連接符

“ + ”運(yùn)算符兩側(cè)的操作數(shù)中只要有一個(gè)是字符串類型,系統(tǒng)會自動將另一個(gè)操作數(shù)轉(zhuǎn)換為字符串然后進(jìn)行連接,例如:

4 + 5 = 94 + “ab” = “4ab”

5.三目條件運(yùn)算符

語法格式: x ? y : z 其中x為boolean類型表達(dá)式,先計(jì)算x的值,若為true,則整個(gè)三目運(yùn)算的結(jié)果為表達(dá)式y(tǒng)的值,否則整個(gè)運(yùn)算結(jié)果為表達(dá)式z的值。

五、表達(dá)式和語句

1.表達(dá)式

表達(dá)式是符合一定語法規(guī)則的運(yùn)算符和操作數(shù)的序列,例如:a5.0 + a(a – b) * c – 4i 30 i %10 !=0

1)表達(dá)式的類型和值

表達(dá)式中的操作數(shù)進(jìn)行運(yùn)算得到的結(jié)果稱為表達(dá)式的值

表達(dá)式值的數(shù)據(jù)類型即為表達(dá)式的類型

2)表達(dá)式的運(yùn)算順序

應(yīng)按照運(yùn)算符的優(yōu)先級從高到低的順序進(jìn)行

優(yōu)先級相同的運(yùn)算符按照實(shí)現(xiàn)約定的結(jié)合方式進(jìn)行

我個(gè)人覺得運(yùn)算順序這塊是可以忽略的,首先我的邏輯思維能力不是特別強(qiáng),另外我的記性也不是特別好,所以如果我需要在表達(dá)式中區(qū)分優(yōu)先級的話我會選擇加括號。但是我覺得對于一些比較復(fù)雜且關(guān)鍵的邏輯運(yùn)算,如果個(gè)人邏輯運(yùn)算能力加記憶都比較好可以保證不出錯(cuò)的話,善用羅技運(yùn)算符優(yōu)先級未嘗不是一種不讓別人看懂你代碼copy的手段。算是一種小小的防護(hù)吧,反正我這種人是不會去嘗試分析這種代碼的,太累

2.分支(條件)語句

ifif ?… elseif ?… else if … else ifif ?… else if … else ?if …else

switch () {case xx:

……………case xx:

……………default:

……………}

1.java中switch語句只能探測int類型的值(char類型的值也可以,因?yàn)樗梢赞D(zhuǎn)換城int類型)

2.小心case穿透,所以最好與break連用

3.多個(gè)case可以連用,如下的示例代碼也可以這樣寫(當(dāng)i=1,2,18都會輸出18):

3.循環(huán)語句

for(…;…;…){……}while(…){……}先判斷再執(zhí)行大括號里面的內(nèi)容,然后再判斷是否要繼續(xù)執(zhí)行do{……} whille(…); 先執(zhí)行大括號里面的內(nèi)容再判斷是否要繼續(xù)執(zhí)行

4.break continue語句

break語句用于終止某個(gè)語句塊的執(zhí)行。用在循環(huán)體語句中么可以強(qiáng)行退出循環(huán)continue語句用在循環(huán)體語句中,用于終止某次循環(huán)過程,跳過循環(huán)中continue語句下面未執(zhí)行的循環(huán),開始下一次循環(huán)過程

八、方法

java的方法類似于其他語言的函數(shù),是一段用來完成特定功能的代碼片段,聲明格式:[修飾符1 ?修飾符2 ?…] 返回值類型 ?方法名 ?(形式參數(shù)列表) ?{

java語句}

形式參數(shù):在方法被調(diào)用時(shí)用于接受外界輸入的數(shù)據(jù)

實(shí)參:調(diào)用方法時(shí)實(shí)際純給方法的數(shù)據(jù)

返回值:方法在執(zhí)行完畢后返回給調(diào)用他的環(huán)境的數(shù)據(jù)

返回值類型:實(shí)現(xiàn)約定的返回值的數(shù)據(jù)類型,如無返回值,必需給出返回值類型void

java語言中調(diào)用方法:對象名.方法名(實(shí)參列表)

實(shí)參的數(shù)目、數(shù)據(jù)類型和次序必需和所調(diào)用方法聲明的形參列表匹配

return語句終止方法的運(yùn)行并指定要返回的數(shù)據(jù)

java中進(jìn)行函數(shù)調(diào)用傳遞參數(shù)時(shí),遵循值傳遞的原則:

基本類型傳遞的是該數(shù)據(jù)值本身,引用累心美國傳遞的是對對象的引用,而不是對象本身

例子中的方法1,前面定義的數(shù)據(jù)類型為void, 所以方法中不能有return返回值,方法4中因?yàn)橛衦eturn返回值,所以前面必需定義為返回值的類型,也就是m4前面那個(gè)int

九、遞歸調(diào)用

遞歸調(diào)用是指在方法執(zhí)行過程中出現(xiàn)該方法本身的調(diào)用

先看一個(gè)例子,這是一個(gè)簡單的遞歸調(diào)用:

簡單分析下:

1.首先main主方法中輸出字符串,內(nèi)容是test方法當(dāng)參數(shù)等于5的時(shí)候的返回值2.然后將參數(shù)5傳入test方法,返回值是:5 * test(4)3.再次將參數(shù)4傳入test方法中,返回值是:4 * test(3)4.再將參數(shù)3傳入test方法中,返回值是:3 * test(2)5.再講參數(shù)2傳入test方法中:返回值是:2 * test(1)6.再將參數(shù)1傳入到方法中:返回值是:1然后程序開始往回走,返回值傳入test(1)中得到2*1再往回走,將剛剛得到的2*1傳入到test(2)中得到3*2*1還要往回走,將剛剛得到的3*2*1傳入到test(3)中得到4*3*2*1還要往回走,將剛剛得到的4*3*2*1傳入到test(4)中也就是test(5)的返回值,得到5*4*3*2*1最后將test5的返回值傳入到我們的主方法輸出于語句中5*4*3*2*1=120,那么我們的輸出語句輸出的應(yīng)該為120

這就是簡單的遞歸調(diào)用的例子了

再來看一個(gè)例子:

非遞歸的寫法:

請自行領(lǐng)悟

最后奉上java基礎(chǔ)語法完整學(xué)習(xí)路線圖,除此之外還有精心整理的其他java學(xué)習(xí)路線圖,學(xué)習(xí)書籍電子書,阿里巴巴手冊,視頻教程等即可點(diǎn)此領(lǐng)?。?/p>

java中char類型和int類型相加結(jié)果是char類型還是int類型

假設(shè)程序語言是C/C++。

一般而言結(jié)果是int類型。如果在某個(gè)編譯器上char被實(shí)現(xiàn)為unsigned char且長度與int相同,則結(jié)果會是unsigned int類型。

執(zhí)行算術(shù)運(yùn)算,首先對運(yùn)算對象進(jìn)行整型提升。所謂整型提升,即按如下規(guī)則類型轉(zhuǎn)換:

對于bool、(signed/unsigned) char、(unsigned) short等類型來說,只要它們所有可能的值都能存在int里,它們就會提升成int類型;否則,提升成unsigned int類型。例如,兩個(gè)signed char相加,兩個(gè)signed char都會提升成int。

較大的char類型(wchar_t、char16_t、char32_t)提升成int、unsigned int、long、unsigned long、long long和unsigned long long中最小的能容納原類型所有可能的值的類型。

整型提升后,如果結(jié)果類型匹配,無需進(jìn)一步的轉(zhuǎn)換。如果兩個(gè)(提升后的)運(yùn)算對象都是帶符號的,或者都是無符號的,則小類型轉(zhuǎn)換成大類型。例如,int與long相加,結(jié)果是long。

如果一個(gè)運(yùn)算對象是無符號類型,另一個(gè)運(yùn)算對象是帶符號類型,又分兩種情況:

無符號的類型不小于帶符號的類型(比如unsigned long與int),此時(shí)帶符號的轉(zhuǎn)換成無符號的。例如原題中若char被實(shí)現(xiàn)為unsigned char且長度與int相同,則首先執(zhí)行整型提升char被轉(zhuǎn)換為unsigned int(int不能容納char的所有可能值),然后int與unsigned int相加,int被轉(zhuǎn)換為unsigned int,最終結(jié)果為unsigned int。

無符號的類型小于帶符號的類型,此時(shí)結(jié)果依賴于機(jī)器。如果無符號類型的所有值都能存在該帶符號類型中,則無符號的轉(zhuǎn)換成帶符號的,否則帶符號的轉(zhuǎn)換成無符號的。


網(wǎng)站題目:算數(shù)編碼代碼java 簡述算數(shù)編碼需要注意的問題
網(wǎng)頁鏈接:http://weahome.cn/article/doocddi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部