Java是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計(jì)語(yǔ)言和Java平臺(tái)的總稱(chēng)。用Java實(shí)現(xiàn)的HotJava瀏覽器(支持Java applet)顯示了Java的魅力:跨平臺(tái)、動(dòng)態(tài)的Web、Internet計(jì)算。從此,Java被廣泛接受并推動(dòng)了Web的迅速發(fā)展,常用的瀏覽器現(xiàn)均支持Java applet。
本文主要介紹的是java開(kāi)發(fā),首先介紹了java開(kāi)發(fā)的過(guò)程,其次介紹了java開(kāi)發(fā)中遇到的難點(diǎn),最后闡述了java開(kāi)發(fā)常見(jiàn)的問(wèn)題及解決辦法,具體的跟隨小編一起來(lái)了解一下。
Java開(kāi)發(fā)過(guò)程
Java 的開(kāi)發(fā)總要經(jīng)過(guò)立項(xiàng)一設(shè)計(jì)一一編碼一一測(cè)試等諸多過(guò)程,下面先來(lái)介紹一下Java 開(kāi)發(fā)中的這些開(kāi)發(fā)經(jīng)驗(yàn)。
1、立項(xiàng)
這個(gè)時(shí)候需要做的是需求的收集,開(kāi)發(fā)人員需要重視需求。機(jī)會(huì)總是傾向有準(zhǔn)備的人,成功自然也是這樣。開(kāi)發(fā)人員不但要做好需求分析,還要做出精確的估計(jì)。因?yàn)榫幋a工作保質(zhì)保量的按時(shí)完成需要多方的準(zhǔn)備工作,技術(shù)難點(diǎn)需要進(jìn)行充分的技術(shù)預(yù)言,不熟悉的依賴(lài)平臺(tái)或類(lèi)庫(kù)要進(jìn)行熟悉。
2、設(shè)計(jì)
設(shè)計(jì)的時(shí)候要善用圖,因?yàn)橥ㄟ^(guò)圖可以將模塊結(jié)構(gòu)以及流程等很難用用文字描述的內(nèi)容清晰的表達(dá)出來(lái)。
此外,設(shè)計(jì)的時(shí)候要耐得住詳細(xì)設(shè)計(jì)過(guò)程中的繁瑣、痛苦,要以快樂(lè)的心態(tài)面對(duì)。
3、編碼
編碼工作需要保持細(xì)致、認(rèn)真、嚴(yán)謹(jǐn)?shù)墓ぷ鞯墓ぷ鲬B(tài)度,做出的編碼不能倉(cāng)促、草率,要考慮周到。在邏輯、風(fēng)格、簡(jiǎn)單有效等方面拿出你的最好,既能更好為公司實(shí)現(xiàn)價(jià)值,同時(shí)更有利自己在技能,崗位的進(jìn)步。
4、測(cè)試
編寫(xiě)的代碼不能因?yàn)橐粫r(shí)的疏漏而造成后期工作麻煩,開(kāi)發(fā)人員都要將自己編寫(xiě)的代碼詳細(xì)的測(cè)試一下,驗(yàn)證無(wú)誤再提交,這樣才能成為一個(gè)優(yōu)秀的開(kāi)發(fā)人員。
Java開(kāi)發(fā)中遇到的難點(diǎn)匯總
1、Scanner對(duì)象
我們都知道使用”Scanner scanner=new Scanner(System.in);“來(lái)進(jìn)行輸入,但如果我們只設(shè)置一個(gè)scanner對(duì)象,即用來(lái)輸入String型的數(shù)據(jù),又用來(lái)輸入int型的數(shù)據(jù)會(huì)怎樣呢?
答案是出錯(cuò)!每一個(gè)Scanner對(duì)象只能用來(lái)輸入一種類(lèi)型的數(shù)據(jù),想輸入String就創(chuàng)建一個(gè) stringInput對(duì)象只用來(lái)輸入
String數(shù)據(jù)。絕對(duì)不可以在用來(lái)輸入其他數(shù)據(jù)!
我們也可以通過(guò)String name=new Scanner(System.in).next();的方法進(jìn)行輸入,每要輸入一個(gè)數(shù)據(jù),就新建一個(gè)Scanner對(duì)象。
2、關(guān)于static
最基本的我們都知道static方法只能引用static型的數(shù)據(jù),而實(shí)例方法既能引用一般數(shù)據(jù),也能引用static數(shù)據(jù)。
下面兩個(gè)例子是我在編程中遇到的關(guān)于static問(wèn)題。
例1:
我們要?jiǎng)?chuàng)建一個(gè)test類(lèi),可以時(shí)刻追蹤到test類(lèi)創(chuàng)建了多少個(gè)對(duì)象。
class test{
int sum=0;
test(){ ++sum;System.out.ptintln(“test類(lèi)共創(chuàng)建了”+sum+“個(gè)對(duì)象!”);}
}
在主類(lèi)的方法中測(cè)試test test1=new test();test test1=new test();test test1=new test();
當(dāng)創(chuàng)建一個(gè)對(duì)象是都會(huì)輸出“test類(lèi)共創(chuàng)建了1個(gè)對(duì)象!”這是為什么呢?
因?yàn)槊看蝿?chuàng)建類(lèi)時(shí)sum都會(huì)被初始化為0,即每次都會(huì)為sum重新開(kāi)辟一個(gè)內(nèi)存空間,所以每次執(zhí)行都會(huì)輸出1.
解決方法:把sum設(shè)置為static型, static int sum=0;
這樣每次創(chuàng)建test對(duì)象時(shí),sum的內(nèi)存被固定,可以正確記錄test創(chuàng)建了多少個(gè)對(duì)象!
例2:
我們定義一個(gè)A類(lèi),
A{
private static int sum=0;
public static void addAuto(){sum=sum+10;}
}
然后定義B和C類(lèi),B extends A{}, C extends A{}; B和C類(lèi)和A相同。
這是我們用A的對(duì)象引用B C的對(duì)象(根據(jù)多態(tài)性): A a1=new B();A a2=new C();
a1.addAuto();System.out.println(a1.sum);//結(jié)果為10
a2.addAuto();System.out.println(a2.sum);//結(jié)果為20 ???
我們新建了兩個(gè)對(duì)象,a1和a2的結(jié)果應(yīng)該是相同的,為什么a2中的sum值會(huì)是20呢?
因?yàn)锳中為static方法,我們創(chuàng)建的a1的內(nèi)存為10;在創(chuàng)建一個(gè)a2,此時(shí)a2的內(nèi)存是20,它繼承了a1,
所以會(huì)在a1的基礎(chǔ)上繼續(xù)+10.
3、關(guān)于JAVA類(lèi)數(shù)組
對(duì)于一些類(lèi)似于學(xué)生管理系統(tǒng)或者客戶(hù)管理系統(tǒng),可能需要我們?cè)O(shè)置一個(gè)數(shù)組,用來(lái)存一定數(shù)量的信息,
用來(lái)實(shí)現(xiàn)增刪改查。如一個(gè)student類(lèi),來(lái)創(chuàng)建一個(gè)學(xué)生類(lèi)數(shù)組students[];
如果增添一個(gè)學(xué)生信息,我們是否可以直接利用下面的方法呢?
students[0].setName(new Scanner(System.in).next());//輸入一個(gè)學(xué)生的姓名
students[0].setId(new Scanner(System.in).nextInt());//學(xué)號(hào)
students[0].setScore(new Scanner(System.in).nextInt());//分?jǐn)?shù)
答案是不能!對(duì)于students數(shù)組,我們只是聲明,并沒(méi)有為其分配內(nèi)存空間,所以類(lèi)似于鏈表的節(jié)點(diǎn),
我們需要?jiǎng)?chuàng)建一個(gè)中介student mid=new student();然后給mid進(jìn)行上面的輸入操作,然后把mid賦給
students[0]。
4、《String.equals()》
對(duì)于兩個(gè)字符判斷是否相等,我們習(xí)慣用下面的方法:
這種方法是錯(cuò)誤的,在我們運(yùn)行程序過(guò)程中不難發(fā)現(xiàn)。在JAVA中判斷兩個(gè)字符串相等是不可以用==的方法。
而是通過(guò)if(str1.equals(str2))
我們常用的通過(guò)名字來(lái)進(jìn)行查找,刪除,修改都會(huì)用到。
評(píng)論