成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

從頭開(kāi)始的代碼java 重新開(kāi)始代碼

java寫(xiě)一個(gè)自動(dòng)程序開(kāi)始先怎么寫(xiě)

使用Eclipse編寫(xiě)自己的第一個(gè)Java代碼。

公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)建站推出莊河免費(fèi)做網(wǎng)站回饋大家。

編寫(xiě)如下:

1、首先打開(kāi)自己安裝的Eclipse軟件。

2、然后選擇File-New-JavaProject。

3、然后找到工程打開(kāi),右擊src選擇-New-Class。

4、填入類(lèi)名,選擇下面的publicstaticvoidmain(String[]args)。

5、然后寫(xiě)入代碼publicclassDemo{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubSystem.out.println(HelloWorld)。

6、點(diǎn)擊上面的運(yùn)行按鈕,點(diǎn)擊確認(rèn),可以看到代碼運(yùn)行結(jié)果。

求一個(gè)簡(jiǎn)單java程序代碼,謝謝

public class TestStar {

public static void main(String[] args) {

String star = "*";

for (int i = 0; i 5; i++) {

if (i == 0) {

System.out.print(" " + star);

System.out.println();

}

if (i == 1) {

for (int z = 0; z 4; z++) {

System.out.print(" " + star);

}

System.out.println();

}

if (i == 2) {

System.out.print(" ");

for (int x = 0; x 3; x++) {

System.out.print(" " + star);

}

System.out.println();

}

if (i == 3) {

for (int y = 0; y 2; y++) {

System.out.print(" " + star + " ");

}

}

}

}

}

是好使的 但是我沒(méi)找到畫(huà)五角星有什么規(guī)律(五角星好象不是正規(guī)圖形吧?)如果還有什么要求的話(huà) 補(bǔ)充問(wèn)題(如果是用*填充所有的東西 不包括 “ ”的話(huà) 我可以重新再給你寫(xiě)一個(gè))

求JAVA新手教程

Java新手入門(mén)的30個(gè)基本概念

在我們學(xué)習(xí)Java的過(guò)程中,掌握其中的基本概念對(duì)我們的學(xué)習(xí)無(wú)論是J2SE,J2EE,J2ME都是很重要的,J2SE是Java的基礎(chǔ),所以有必要對(duì)其中的基本概念做以歸納,以便大家在以后的學(xué)習(xí)過(guò)程中更好的理解java的精髓,在此我總結(jié)了30條基本的概念。

Java概述:

目前Java主要應(yīng)用于中間件的開(kāi)發(fā)(middleware)---處理客戶(hù)機(jī)于服務(wù)器之間的通信技術(shù),早期的實(shí)踐證明,Java不適合pc應(yīng)用程序的開(kāi)發(fā),其發(fā)展逐漸變成在開(kāi)發(fā)手持設(shè)備,互聯(lián)網(wǎng)信息站,及車(chē)載計(jì)算機(jī)的開(kāi)發(fā).Java于其他語(yǔ)言所不同的是程序運(yùn)行時(shí)提供了平臺(tái)的獨(dú)立性,稱(chēng)許可以在windows,solaris,linux其他操作系統(tǒng)上使用完全相同的代碼.Java的語(yǔ)法與C++語(yǔ)法類(lèi)似,C++/C程序員很容易掌握,而且Java是完全的徹底的面向?qū)ο蟮?其中提出了很好的GC(Garbage Collector)垃圾處理機(jī)制,防止內(nèi)存溢出。

Java的白皮書(shū)為我們提出了Java語(yǔ)言的11個(gè)關(guān)鍵特性。

(1)Easy:Java的語(yǔ)法比C++的相對(duì)簡(jiǎn)單,另一個(gè)方面就是Java能使軟件在很小的機(jī)器上運(yùn)行,基礎(chǔ)解釋其和類(lèi)庫(kù)的支持的大小約為40kb,增加基本的標(biāo)準(zhǔn)庫(kù)和線(xiàn)程支持的內(nèi)存需要增加125kb。

(2)分布式:Java帶有很強(qiáng)大的TCP/IP協(xié)議族的例程庫(kù),Java應(yīng)用程序能夠通過(guò)URL來(lái)穿過(guò)網(wǎng)絡(luò)來(lái)訪(fǎng)問(wèn)遠(yuǎn)程對(duì)象,由于servlet機(jī)制的出現(xiàn),使Java編程非常的高效,現(xiàn)在許多的大的web server都支持servlet。

(3)OO:面向?qū)ο笤O(shè)計(jì)是把重點(diǎn)放在對(duì)象及對(duì)象的接口上的一個(gè)編程技術(shù).其面向?qū)ο蠛虲++有很多不同,在與多重繼承的處理及Java的原類(lèi)模型。

(4)健壯特性:Java采取了一個(gè)安全指針模型,能減小重寫(xiě)內(nèi)存和數(shù)據(jù)崩潰的可能型。

(5)安全:Java用來(lái)設(shè)計(jì)網(wǎng)路和分布系統(tǒng),這帶來(lái)了新的安全問(wèn)題,Java可以用來(lái)構(gòu)建防病毒和防攻擊的System.事實(shí)證明Java在防毒這一方面做的比較好。

(6)中立體系結(jié)構(gòu):Java編譯其生成體系結(jié)構(gòu)中立的目標(biāo)文件格式可以在很多處理器上執(zhí)行,編譯器產(chǎn)生的指令字節(jié)碼(Javabytecode)實(shí)現(xiàn)此特性,此字節(jié)碼可以在任何機(jī)器上解釋執(zhí)行。

(7)可移植性:Java中對(duì)基本數(shù)據(jù)結(jié)構(gòu)類(lèi)型的大小和算法都有嚴(yán)格的規(guī)定所以可移植性很好。

(8)多線(xiàn)程:Java處理多線(xiàn)程的過(guò)程很簡(jiǎn)單,Java把多線(xiàn)程實(shí)現(xiàn)交給底下操作系統(tǒng)或線(xiàn)程程序完成.所以多線(xiàn)程是Java作為服務(wù)器端開(kāi)發(fā)語(yǔ)言的流行原因之一。

(9)Applet和servlet:能夠在網(wǎng)頁(yè)上執(zhí)行的程序叫Applet,需要支持Java的瀏覽器很多,而applet支持動(dòng)態(tài)的網(wǎng)頁(yè),這是很多其他語(yǔ)言所不能做到的。

基本概念:

1.OOP中唯一關(guān)系的是對(duì)象的接口是什么,就像計(jì)算機(jī)的銷(xiāo)售商她不管電源內(nèi)部結(jié)構(gòu)是怎樣的,他只關(guān)系能否給你提供電就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的屬性和行為對(duì)象組成的,不同的對(duì)象的訪(fǎng)問(wèn)通過(guò)函數(shù)調(diào)用來(lái)完成,對(duì)象間所有的交流都是通過(guò)方法調(diào)用,通過(guò)對(duì)封裝對(duì)象數(shù)據(jù),很大限度上提高復(fù)用率。

2.OOP中最重要的思想是類(lèi),類(lèi)是模板是藍(lán)圖,從類(lèi)中構(gòu)造一個(gè)對(duì)象,即創(chuàng)建了這個(gè)類(lèi)的一個(gè)實(shí)例(instance)。

3.封裝:就是把數(shù)據(jù)和行為結(jié)合起在一個(gè)包中)并對(duì)對(duì)象使用者隱藏?cái)?shù)據(jù)的實(shí)現(xiàn)過(guò)程,一個(gè)對(duì)象中的數(shù)據(jù)叫他的實(shí)例字段(instance field)。

4.通過(guò)擴(kuò)展一個(gè)類(lèi)來(lái)獲得一個(gè)新類(lèi)叫繼承(inheritance),而所有的類(lèi)都是由Object根超類(lèi)擴(kuò)展而得,根超類(lèi)下文會(huì)做介紹。

5.對(duì)象的3個(gè)主要特性

behavior---說(shuō)明這個(gè)對(duì)象能做什么.

state---當(dāng)對(duì)象施加方法時(shí)對(duì)象的反映.

identity---與其他相似行為對(duì)象的區(qū)分標(biāo)志.

每個(gè)對(duì)象有唯一的indentity 而這3者之間相互影響.

6.類(lèi)之間的關(guān)系:

use-a :依賴(lài)關(guān)系

has-a :聚合關(guān)系

is-a :繼承關(guān)系--例:A類(lèi)繼承了B類(lèi),此時(shí)A類(lèi)不僅有了B類(lèi)的方法,還有其自己的方法.(個(gè)性存在于共性中)

7.構(gòu)造對(duì)象使用構(gòu)造器:構(gòu)造器的提出,構(gòu)造器是一種特殊的方法,構(gòu)造對(duì)象并對(duì)其初始化。

例:Data類(lèi)的構(gòu)造器叫Data

new Data()---構(gòu)造一個(gè)新對(duì)象,且初始化當(dāng)前時(shí)間.

Data happyday=new Data()---把一個(gè)對(duì)象賦值給一個(gè)變量happyday,從而使該對(duì)象能夠多次使用,此處要聲明的使變量與對(duì)象變量二者是不同的.new返回的值是一個(gè)引用。

構(gòu)造器特點(diǎn):構(gòu)造器可以有0個(gè),一個(gè)或多個(gè)參數(shù)

構(gòu)造器和類(lèi)有相同的名字

一個(gè)類(lèi)可以有多個(gè)構(gòu)造器

構(gòu)造器沒(méi)有返回值

構(gòu)造器總是和new運(yùn)算符一起使用.

8.重載:當(dāng)多個(gè)方法具有相同的名字而含有不同的參數(shù)時(shí),便發(fā)生重載.編譯器必須挑選出調(diào)用哪個(gè)方法。

9.包(package)Java允許把一個(gè)或多個(gè)類(lèi)收集在一起成為一組,稱(chēng)作包,以便于組織任務(wù),標(biāo)準(zhǔn)Java庫(kù)分為許多包.java.lang java.util java,net等,包是分層次的所有的java包都在java和javax包層次內(nèi)。

10.繼承思想:允許在已經(jīng)存在的類(lèi)的基礎(chǔ)上構(gòu)建新的類(lèi),當(dāng)你繼承一個(gè)已經(jīng)存在的類(lèi)時(shí),那么你就復(fù)用了這個(gè)類(lèi)的方法和字段,同時(shí)你可以在新類(lèi)中添加新的方法和字段。

11.擴(kuò)展類(lèi):擴(kuò)展類(lèi)充分體現(xiàn)了is-a的繼承關(guān)系. 形式為:class (子類(lèi)) extends (基類(lèi))。

12.多態(tài):在java中,對(duì)象變量是多態(tài)的.而java中不支持多重繼承。

13.動(dòng)態(tài)綁定:調(diào)用對(duì)象方法的機(jī)制。

(1)編譯器檢查對(duì)象聲明的類(lèi)型和方法名。

(2)編譯器檢查方法調(diào)用的參數(shù)類(lèi)型。

(3)靜態(tài)綁定:若方法類(lèi)型為priavte static final 編譯器會(huì)準(zhǔn)確知道該調(diào)用哪個(gè)方法。

(4)當(dāng)程序運(yùn)行并且使用動(dòng)態(tài)綁定來(lái)調(diào)用一個(gè)方法時(shí),那么虛擬機(jī)必須調(diào)用x所指向的對(duì)象的實(shí)際類(lèi)型相匹配的方法版本。

(5)動(dòng)態(tài)綁定:是很重要的特性,它能使程序變得可擴(kuò)展而不需要重編譯已存代碼。

14.final類(lèi):為防止他人從你的類(lèi)上派生新類(lèi),此類(lèi)是不可擴(kuò)展的。

15.動(dòng)態(tài)調(diào)用比靜態(tài)調(diào)用花費(fèi)的時(shí)間要長(zhǎng)。

16.抽象類(lèi):規(guī)定一個(gè)或多個(gè)抽象方法的類(lèi)本身必須定義為abstract。

例: public abstract string getDescripition

17.Java中的每一個(gè)類(lèi)都是從Object類(lèi)擴(kuò)展而來(lái)的。

18.object類(lèi)中的equal和toString方法。

equal用于測(cè)試一個(gè)對(duì)象是否同另一個(gè)對(duì)象相等。

toString返回一個(gè)代表該對(duì)象的字符串,幾乎每一個(gè)類(lèi)都會(huì)重載該方法,以便返回當(dāng)前狀態(tài)的正確表示.

(toString 方法是一個(gè)很重要的方法)

19.通用編程:任何類(lèi)類(lèi)型的所有值都可以同object類(lèi)性的變量來(lái)代替。

20.數(shù)組列表:ArrayList動(dòng)態(tài)數(shù)組列表,是一個(gè)類(lèi)庫(kù),定義在java.uitl包中,可自動(dòng)調(diào)節(jié)數(shù)組的大小。

21.class類(lèi) object類(lèi)中的getclass方法返回ckass類(lèi)型的一個(gè)實(shí)例,程序啟動(dòng)時(shí)包含在main方法的類(lèi)會(huì)被加載,虛擬機(jī)要加載他需要的所有類(lèi),每一個(gè)加載的類(lèi)都要加載它需要的類(lèi)。

22.class類(lèi)為編寫(xiě)可動(dòng)態(tài)操縱java代碼的程序提供了強(qiáng)大的功能反射,這項(xiàng)功能為JavaBeans特別有用,使用反射Java能支持VB程序員習(xí)慣使用的工具。

能夠分析類(lèi)能力的程序叫反射器,Java中提供此功能的包叫Java.lang.reflect反射機(jī)制十分強(qiáng)大.

1.在運(yùn)行時(shí)分析類(lèi)的能力。

2.在運(yùn)行時(shí)探察類(lèi)的對(duì)象。

3.實(shí)現(xiàn)通用數(shù)組操縱代碼。

4.提供方法對(duì)象。

而此機(jī)制主要針對(duì)是工具者而不是應(yīng)用及程序。

反射機(jī)制中的最重要的部分是允許你檢查類(lèi)的結(jié)構(gòu).用到的API有:

java.lang.reflect.Field 返回字段.

java.reflect.Method 返回方法.

java.lang.reflect.Constructor 返回參數(shù).

方法指針:java沒(méi)有方法指針,把一個(gè)方法的地址傳給另一個(gè)方法,可以在后面調(diào)用它,而接口是更好的解決方案。

23.接口(Interface)說(shuō)明類(lèi)該做什么而不指定如何去做,一個(gè)類(lèi)可以實(shí)現(xiàn)一個(gè)或多個(gè)interface。

24.接口不是一個(gè)類(lèi),而是對(duì)符合接口要求的類(lèi)的一套規(guī)范。

若實(shí)現(xiàn)一個(gè)接口需要2個(gè)步驟:

1.聲明類(lèi)需要實(shí)現(xiàn)的指定接口。

2.提供接口中的所有方法的定義。

聲明一個(gè)類(lèi)實(shí)現(xiàn)一個(gè)接口需要使用implements 關(guān)鍵字

class actionB implements Comparable 其actionb需要提供CompareTo方法,接口不是類(lèi),不能用new實(shí)例化一個(gè)接口.

25.一個(gè)類(lèi)只有一個(gè)超類(lèi),但一個(gè)類(lèi)能實(shí)現(xiàn)多個(gè)接口。Java中的一個(gè)重要接口:Cloneable

26.接口和回調(diào).編程一個(gè)常用的模式是回調(diào)模式,在這種模式中你可以指定當(dāng)一個(gè)特定時(shí)間發(fā) 生時(shí)回調(diào)對(duì)象上的方法。

例:ActionListener 接口監(jiān)聽(tīng).

類(lèi)似的API有:java.swing.JOptionPane

java.swing.Timer

java.awt.Tookit

27.對(duì)象clone:clone方法是object一個(gè)保護(hù)方法,這意味著你的代碼不能簡(jiǎn)單的調(diào)用它。

28.內(nèi)部類(lèi):一個(gè)內(nèi)部類(lèi)的定義是定義在另一個(gè)內(nèi)部的類(lèi)。

原因是:

1.一個(gè)內(nèi)部類(lèi)的對(duì)象能夠訪(fǎng)問(wèn)創(chuàng)建它的對(duì)象的實(shí)現(xiàn),包括私有數(shù)據(jù)。

2.對(duì)于同一個(gè)包中的其他類(lèi)來(lái)說(shuō),內(nèi)部類(lèi)能夠隱藏起來(lái)。

3.匿名內(nèi)部類(lèi)可以很方便的定義回調(diào)。

4.使用內(nèi)部類(lèi)可以非常方便的編寫(xiě)事件驅(qū)動(dòng)程序。

29.代理類(lèi)(proxy):

1.指定接口要求所有代碼

2.object類(lèi)定義的所有的方法(toString equals)

30.數(shù)據(jù)類(lèi)型:Java是強(qiáng)調(diào)類(lèi)型的語(yǔ)言,每個(gè)變量都必須先申明它都類(lèi)型,java中總共有8個(gè)基本類(lèi)型.4種是整型,2種是浮點(diǎn)型,一種是字符型,被用于Unicode編碼中的字符,布爾型。

一、入門(mén)

《Java 2從入門(mén)到精通》- 推薦

《Thinking in Java》- 強(qiáng)烈推薦*

O’reilly的Java編程基礎(chǔ)系列 - 參考*

二、進(jìn)階

《Java Cook Book》- 非常推薦* (包含了Java編程的Tips,適合當(dāng)做手冊(cè)來(lái)查閱)

《O’reilly-Java IO》- 推薦* (包含Java IO編程的各個(gè)方面)

《O’reilly-Database Programming with JDBC》- 推薦* (JDBC編程)

《O’reilly-Java Programming with Oracle JDBC》- 參考*

三、Java Web編程

《O’reilly-Java Server Pages》- 強(qiáng)烈推薦*

《O’reilly-Java Servlet Programming》- 非常推薦*

《O’reilly-Jakarta Struts》- 推薦* (Java Web編程的一個(gè)MVC實(shí)現(xiàn)框架Struts的書(shū))

四、EJB編程

《J2EE應(yīng)用與BEA Weblogic Server》- 強(qiáng)烈推薦

《Mastering EJB 2.0》- 非常推薦*

《Enterprise Java Bean》- 推薦*

五、Java XML編程

《O’reilly-Java and XML》- 推薦*

《O’reilly-Java and SOAP》- 參考* (Java的SOAP編程)

六、設(shè)計(jì)模式

《Core J2EE Patterns》- 強(qiáng)烈推薦* (J2EE設(shè)計(jì)模式,設(shè)計(jì)企業(yè)應(yīng)用軟件必備參考書(shū))

《EJB Design Patterns》- 推薦*

頁(yè)面功能 【加入收藏】 【推薦給朋友】 【字體:大 中 小】 【關(guān)閉】

java編程規(guī)范-

作者:佚名 來(lái)自:未知

命名規(guī)范

定義這個(gè)規(guī)范的目的是讓項(xiàng)目中所有的文檔都看起來(lái)像一個(gè)人寫(xiě)的,增加可讀性,減少項(xiàng)目組中因?yàn)閾Q人而帶來(lái)的損失。(這些規(guī)范并不是一定要絕對(duì)遵守,但是一定要讓程序有良好的可讀性)

Package 的命名

Package 的名字應(yīng)該都是由一個(gè)小寫(xiě)單詞組成。

Class 的命名

Class 的名字必須由大寫(xiě)字母開(kāi)頭而其他字母都小寫(xiě)的單詞組成

Class 變量的命名

變量的名字必須用一個(gè)小寫(xiě)字母開(kāi)頭。后面的單詞用大寫(xiě)字母開(kāi)頭。

Static Final 變量的命名

Static Final 變量的名字應(yīng)該都大寫(xiě),并且指出完整含義。

參數(shù)的命名

參數(shù)的名字必須和變量的命名規(guī)范一致。

數(shù)組的命名

數(shù)組應(yīng)該總是用下面的方式來(lái)命名:

byte[] buffer;

而不是:

byte buffer[];

方法的參數(shù)

使用有意義的參數(shù)命名,如果可能的話(huà),使用和要賦值的字段一樣的名字:

SetCounter(int size){

this.size = size;

}

Java 文件樣式

所有的 Java(*.java) 文件都必須遵守如下的樣式規(guī)則

版權(quán)信息

版權(quán)信息必須在 java 文件的開(kāi)頭,比如:

/**

* Copyright ? 2000 Shanghai XXX Co. Ltd.

* All right reserved.

*/

其他不需要出現(xiàn)在 javadoc 的信息也可以包含在這里。

Package/Imports

package 行要在 import 行之前,import 中標(biāo)準(zhǔn)的包名要在本地的包名之前,而且按照字母順序排列。如果 import 行中包含了同一個(gè)包中的不同子目錄,則應(yīng)該用 * 來(lái)處理。

package hotlava.net.stats;

import java.io.*;

import java.util.Observable;

import hotlava.util.Application;

這里 java.io.* 使用來(lái)代替InputStream and OutputStream 的。

Class

接下來(lái)的是類(lèi)的注釋?zhuān)话闶怯脕?lái)解釋類(lèi)的。

/**

* A class representing a set of packet and byte counters

* It is observable to allow it to be watched, but only

* reports changes when the current set is complete

*/

接下來(lái)是類(lèi)定義,包含了在不同的行的 extends 和 implements

public class CounterSet

extends Observable

implements Cloneable

Class Fields

接下來(lái)是類(lèi)的成員變量:

/**

* Packet counters

*/

protected int[] packets;

public 的成員變量必須生成文檔(JavaDoc)。Proceted、private和 package 定義的成員變量如果名字含義明確的話(huà),可以沒(méi)有注釋。

存取方法

接下來(lái)是類(lèi)變量的存取的方法。它只是簡(jiǎn)單的用來(lái)將類(lèi)的變量賦值獲取值的話(huà),可以簡(jiǎn)單的寫(xiě)在一行上。

/**

* Get the counters

* @return an array containing the statistical data. This array has been

* freshly allocated and can be modified by the caller.

*/

public int[] getPackets() { return copyArray(packets, offset); }

public int[] getBytes() { return copyArray(bytes, offset); }

public int[] getPackets() { return packets; }

public void setPackets(int[] packets) { this.packets = packets; }

其它的方法不要寫(xiě)在一行上

構(gòu)造函數(shù)

接下來(lái)是構(gòu)造函數(shù),它應(yīng)該用遞增的方式寫(xiě)(比如:參數(shù)多的寫(xiě)在后面)。

訪(fǎng)問(wèn)類(lèi)型 ('public', 'private' 等.) 和 任何 'static', 'final' 或 'synchronized' 應(yīng)該在一行中,并且方法和參數(shù)另寫(xiě)一行,這樣可以使方法和參數(shù)更易讀。

public

CounterSet(int size){

this.size = size;

}

克隆方法

如果這個(gè)類(lèi)是可以被克隆的,那么下一步就是 clone 方法:

public

Object clone() {

try {

CounterSet obj = (CounterSet)super.clone();

obj.packets = (int[])packets.clone();

obj.size = size;

return obj;

}catch(CloneNotSupportedException e) {

throw new InternalError('Unexpected CloneNotSUpportedException: ' + e.getMessage());

}

}

類(lèi)方法

下面開(kāi)始寫(xiě)類(lèi)的方法:

/**

* Set the packet counters

* (such as when restoring from a database)

*/

protected final

void setArray(int[] r1, int[] r2, int[] r3, int[] r4)

throws IllegalArgumentException

{

//

// Ensure the arrays are of equal size

//

if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length)

throw new IllegalArgumentException('Arrays must be of the same size');

System.arraycopy(r1, 0, r3, 0, r1.length);

System.arraycopy(r2, 0, r4, 0, r1.length);

}

toString 方法

無(wú)論如何,每一個(gè)類(lèi)都應(yīng)該定義 toString 方法:

public

String toString() {

String retval = 'CounterSet: ';

for (int I = 0; I data.length(); i++) {

retval += data.bytes.toString();

retval += data.packets.toString();

}

return retval;

}

}

main 方法

如果main(String[]) 方法已經(jīng)定義了, 那么它應(yīng)該寫(xiě)在類(lèi)的底部.

代碼編寫(xiě)格式

代碼樣式

代碼應(yīng)該用 unix 的格式,而不是 windows 的(比如:回車(chē)變成回車(chē)+換行)

文檔化

必須用 javadoc 來(lái)為類(lèi)生成文檔。不僅因?yàn)樗菢?biāo)準(zhǔn),這也是被各種 java 編譯器都認(rèn)可的方法。使用 @author 標(biāo)記是不被推薦的,因?yàn)榇a不應(yīng)該是被個(gè)人擁有的。

縮進(jìn)

縮進(jìn)應(yīng)該是每行2個(gè)空格. 不要在源文件中保存Tab字符. 在使用不同的源代碼管理工具時(shí)Tab字符將因?yàn)橛脩?hù)設(shè)置的不同而擴(kuò)展為不同的寬度.

如果你使用 UltrEdit 作為你的 Java 源代碼編輯器的話(huà),你可以通過(guò)如下操作來(lái)禁止保存Tab字符, 方法是通過(guò) UltrEdit中先設(shè)定 Tab 使用的長(zhǎng)度室2個(gè)空格,然后用 Format|Tabs to Spaces 菜單將 Tab 轉(zhuǎn)換為空格。

頁(yè)寬

頁(yè)寬應(yīng)該設(shè)置為80字符. 源代碼一般不會(huì)超過(guò)這個(gè)寬度, 并導(dǎo)致無(wú)法完整顯示, 但這一設(shè)置也可以靈活調(diào)整. 在任何情況下, 超長(zhǎng)的語(yǔ)句應(yīng)該在一個(gè)逗號(hào)或者一個(gè)操作符后折行. 一條語(yǔ)句折行后, 應(yīng)該比原來(lái)的語(yǔ)句再縮進(jìn)2個(gè)字符.

{} 對(duì)

{} 中的語(yǔ)句應(yīng)該單獨(dú)作為一行. 例如, 下面的第1行是錯(cuò)誤的, 第2行是正確的:

if (i0) { I ++ }; // 錯(cuò)誤, { 和 } 在同一行

if (i0) {

I ++

}; // 正確, { 單獨(dú)作為一行

} 語(yǔ)句永遠(yuǎn)單獨(dú)作為一行.

如果 } 語(yǔ)句應(yīng)該縮進(jìn)到與其相對(duì)應(yīng)的 { 那一行相對(duì)齊的位置。

括號(hào)

左括號(hào)和后一個(gè)字符之間不應(yīng)該出現(xiàn)空格, 同樣, 右括號(hào)和前一個(gè)字符之間也不應(yīng)該出現(xiàn)空格. 下面的例子說(shuō)明括號(hào)和空格的錯(cuò)誤及正確使用:

CallProc( Aparameter ); // 錯(cuò)誤

CallProc(Aparameter); // 正確

不要在語(yǔ)句中使用無(wú)意義的括號(hào). 括號(hào)只應(yīng)該為達(dá)到某種目的而出現(xiàn)在源代碼中。下面的例子說(shuō)明錯(cuò)誤和正確的用法:

if ((I) = 42) { // 錯(cuò)誤 - 括號(hào)毫無(wú)意義

if (I == 42) or (J == 42) then // 正確 - 的確需要括號(hào)

程序編寫(xiě)規(guī)范

exit()

exit 除了在 main 中可以被調(diào)用外,其他的地方不應(yīng)該調(diào)用。因?yàn)檫@樣做不給任何代碼代碼機(jī)會(huì)來(lái)截獲退出。一個(gè)類(lèi)似后臺(tái)服務(wù)地程序不應(yīng)該因?yàn)槟骋粋€(gè)庫(kù)模塊決定了要退出就退出。

異常

申明的錯(cuò)誤應(yīng)該拋出一個(gè)RuntimeException或者派生的異常。

頂層的main()函數(shù)應(yīng)該截獲所有的異常,并且打印(或者記錄在日志中)在屏幕上。

垃圾收集

JAVA使用成熟的后臺(tái)垃圾收集技術(shù)來(lái)代替引用計(jì)數(shù)。但是這樣會(huì)導(dǎo)致一個(gè)問(wèn)題:你必須在使用完對(duì)象的實(shí)例以后進(jìn)行清場(chǎng)工作。比如一個(gè)prel的程序員可能這么寫(xiě):

{

FileOutputStream fos = new FileOutputStream(projectFile);

project.save(fos, 'IDE Project File');

}

除非輸出流一出作用域就關(guān)閉,非引用計(jì)數(shù)的程序語(yǔ)言,比如JAVA,是不能自動(dòng)完成變量的清場(chǎng)工作的。必須象下面一樣寫(xiě):

FileOutputStream fos = new FileOutputStream(projectFile);

project.save(fos, 'IDE Project File');

fos.close();

Clone

下面是一種有用的方法:

implements Cloneable

public

Object clone()

{

try {

ThisClass obj = (ThisClass)super.clone();

obj.field1 = (int[])field1.clone();

obj.field2 = field2;

return obj;

} catch(CloneNotSupportedException e) {

throw new InternalError('Unexpected CloneNotSUpportedException: ' + e.getMessage());

}

}

final 類(lèi)

絕對(duì)不要因?yàn)樾阅艿脑驅(qū)㈩?lèi)定義為 final 的(除非程序的框架要求)

如果一個(gè)類(lèi)還沒(méi)有準(zhǔn)備好被繼承,最好在類(lèi)文檔中注明,而不要將她定義為 final 的。這是因?yàn)闆](méi)有人可以保證會(huì)不會(huì)由于什么原因需要繼承她。

訪(fǎng)問(wèn)類(lèi)的成員變量

大部分的類(lèi)成員變量應(yīng)該定義為 protected 的來(lái)防止繼承類(lèi)使用他們。

注意,要用'int[] packets',而不是'int packets[]',后一種永遠(yuǎn)也不要用。

public void setPackets(int[] packets) { this.packets = packets; }

CounterSet(int size)

{

this.size = size;

}

編程技巧

byte 數(shù)組轉(zhuǎn)換到 characters

為了將 byte 數(shù)組轉(zhuǎn)換到 characters,你可以這么做:

'Hello world!'.getBytes();

Utility 類(lèi)

Utility 類(lèi)(僅僅提供方法的類(lèi))應(yīng)該被申明為抽象的來(lái)防止被繼承或被初始化。

初始化

下面的代碼是一種很好的初始化數(shù)組的方法:

objectArguments = new Object[] { arguments };

枚舉類(lèi)型

JAVA 對(duì)枚舉的支持不好,但是下面的代碼是一種很有用的模板:

class Colour {

public static final Colour BLACK = new Colour(0, 0, 0);

public static final Colour RED = new Colour(0xFF, 0, 0);

public static final Colour GREEN = new Colour(0, 0xFF, 0);

public static final Colour BLUE = new Colour(0, 0, 0xFF);

public static final Colour WHITE = new Colour(0xFF, 0xFF, 0xFF);

}

這種技術(shù)實(shí)現(xiàn)了RED, GREEN, BLUE 等可以象其他語(yǔ)言的枚舉類(lèi)型一樣使用的常量。 他們可以用 == 操作符來(lái)比較。

但是這樣使用有一個(gè)缺陷:如果一個(gè)用戶(hù)用這樣的方法來(lái)創(chuàng)建顏色 BLACK

new Colour(0,0,0)

那么這就是另外一個(gè)對(duì)象,==操作符就會(huì)產(chǎn)生錯(cuò)誤。她的 equal() 方法仍然有效。由于這個(gè)原因,這個(gè)技術(shù)的缺陷最好注明在文檔中,或者只在自己的包中使用。

Swing

避免使用 AWT 組件

混合使用 AWT 和 Swing 組件

如果要將 AWT 組件和 Swing 組件混合起來(lái)使用的話(huà),請(qǐng)小心使用。實(shí)際上,盡量不要將他們混合起來(lái)使用。

滾動(dòng)的 AWT 組件

AWT 組件絕對(duì)不要用 JscrollPane 類(lèi)來(lái)實(shí)現(xiàn)滾動(dòng)。滾動(dòng) AWT 組件的時(shí)候一定要用 AWT ScrollPane 組件來(lái)實(shí)現(xiàn)。

避免在 InternalFrame 組件中使用 AWT 組件

盡量不要這么做,要不然會(huì)出現(xiàn)不可預(yù)料的后果。

Z-Order 問(wèn)題

AWT 組件總是顯示在 Swing 組件之上。當(dāng)使用包含 AWT 組件的 POP-UP 菜單的時(shí)候要小心,盡量不要這樣使用。

調(diào)試

調(diào)試在軟件開(kāi)發(fā)中是一個(gè)很重要的部分,存在軟件生命周期的各個(gè)部分中。調(diào)試能夠用配置開(kāi)、關(guān)是最基本的。

很常用的一種調(diào)試方法就是用一個(gè) PrintStream 類(lèi)成員,在沒(méi)有定義調(diào)試流的時(shí)候就為 null,類(lèi)要定義一個(gè) debug 方法來(lái)設(shè)置調(diào)試用的流。

性能

在寫(xiě)代碼的時(shí)候,從頭至尾都應(yīng)該考慮性能問(wèn)題。這不是說(shuō)時(shí)間都應(yīng)該浪費(fèi)在優(yōu)化代碼上,而是我們時(shí)刻應(yīng)該提醒自己要注意代碼的效率。比如:如果沒(méi)有時(shí)間來(lái)實(shí)現(xiàn)一個(gè)高效的算法,那么我們應(yīng)該在文檔中記錄下來(lái),以便在以后有空的時(shí)候再來(lái)實(shí)現(xiàn)她。

不是所有的人都同意在寫(xiě)代碼的時(shí)候應(yīng)該優(yōu)化性能這個(gè)觀點(diǎn)的,他們認(rèn)為性能優(yōu)化的問(wèn)題應(yīng)該在項(xiàng)目的后期再去考慮,也就是在程序的輪廓已經(jīng)實(shí)現(xiàn)了以后。

不必要的對(duì)象構(gòu)造

不要在循環(huán)中構(gòu)造和釋放對(duì)象

java代碼

for (Employee e : staff)

是java的一種新的增強(qiáng)型循環(huán) staff是一個(gè)Employee類(lèi)型的集合

這句話(huà)的意思是,以e為循環(huán)變量,從頭開(kāi)始取出staff中的Employee對(duì)象賦給e,直到staff結(jié)尾。

所以下面這句就是把staff中的所有Employee提升工資5。

for (Employee e : staff)

e.raiseSalary(5);

public Employee(String n, double s, int year, int month, int day)

{

name = n;

salary = s

這是Employee的構(gòu)造函數(shù),把參數(shù)n和s賦給類(lèi)的成員變量name,salary。

怎樣讓一個(gè)java程序從頭開(kāi)始一直重復(fù)運(yùn)行

public?static?void?main(String[]?args)?{

while(true)?{

//填寫(xiě)你的邏輯

}

}

這樣?因?yàn)閣hile(true)所以會(huì)一直運(yùn)行while block里的

當(dāng)前名稱(chēng):從頭開(kāi)始的代碼java 重新開(kāi)始代碼
文章地址:http://jinyejixie.com/article20/hepoco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、手機(jī)網(wǎng)站建設(shè)品牌網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、定制網(wǎng)站網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
澄城县| 育儿| 麻阳| 蒙阴县| 巩义市| 富民县| 武山县| 敦煌市| 雷州市| 瑞昌市| 安乡县| 武冈市| 洛阳市| 葫芦岛市| 德清县| 专栏| 武隆县| 桦甸市| 民乐县| 临泉县| 赫章县| 肇东市| 新和县| 孟连| 新绛县| 珠海市| 万全县| 淮阳县| 通化县| 五河县| 德州市| 龙江县| 连江县| 诏安县| 丹棱县| 荣昌县| 深圳市| 长兴县| 绥棱县| 久治县| 濮阳市|