1. 程式人生 > >java學習心得

java學習心得

this res 靜態方法 result 關閉 自動編譯 awt 多人 sort

  從構建第一個java的項目,構建第一個類開始,在面向對象先導課中,從一個java的門外漢,到逐漸開始利用java完成一些小的代碼,這個過程可以說是一邊迎接著新的挑戰,一邊感受著自己的喜悅。

java第一次給我沖擊的感覺,就是在一開始的時候,運用多個類和類中的方法和構造器,來使代碼變得更加簡潔有效。在第一次課堂練習上從靜態和非靜態方法的區別,和構造方法的繼承,和繼承的子類裏的註意事項,以及父類中數據類型繼承的區別, 

都給了新奇的體驗,也許面向對象的思想就是在這時慢慢生成了萌芽。

如:

class A{
public static void a(){}
public void b(){}
}
public class B(){ public static void main(String[] args){ A.a();//靜態 new A().b();//非靜態

  而java中的構造方法 則在用new初始化一個類的時候,就有效的利用了構造方法進行運算;如果new對象沒有定義構造方法,那麽會默認添加一個構造方法;

使用構造方法的快捷之處在於初始化對象。因為構造方法在創建對象的時候自動進行,所以一般不能夠顯式地調用構造方法,同時在一個類作為父類被繼承的時候,構造方法是不能夠直接繼承的,需要通過super:

public Class Box(){
    public Box(double
x,double y,double z){ } } public Class ScaleBox extends Box(){ public ScaleBox(double x,doubley,double z) {super(a,b,c)} }

  學習編程不可避免地要碰到對字符串和字符串集合的操作,在java中,同樣可以對字符串進行分割操作,也能對一個字符串集合進行操作,

java可以改寫toString方法和split方法,但是更多情況下使用Java自帶的這些字符操作方法會十分的方便。

  同時,Java的學習也涉及到了對文件的讀取和寫入等操作。在學習過程中老師鼓勵我們自己動手查閱網上和各類博客上的信息,

學會一種自己適合的文件處理方法,再學習其他幾種方法並比較中間的異同。

String fileInPath = "文件地址";
        
        File fileIn = new File(fileInPath);
        
        FileReader reader = new FileReader(fileIn);
        
        

  java在幾種容器和叠代器Iterator上的遍歷極其方便,容器本身作為一個可以擴展的載體,相比於數組就更具與靈活性,既不用擔心數組溢出這樣的問題,也能夠避免數組一次性開太大而造成的空間浪費(雖然很大的數組並不會占據多少內存)。

容器不僅在使用上有著安全性,靈活伸縮的容量可以避免數組溢出的潛在危險。同時,使用容器還便於保護了數據的統一性質,在一次家庭作業中,我查閱資料發現容器Arraylist的對象不僅僅可以是String類型或者Integer類型,還可以自己創建的某個類,比如一個類中如果保存了String和Integer兩種不同類型的數據的時候,就可以通過Arraylist來將關聯的信息綁在一起不容易丟失。比如這個TokenString類就作為Arraylist的數據類型出現:

protected ArrayList<TokenString> List;
    protected int wordnum;
    /*將整個類直接作為容器的對象,而不只是存儲String*/
    public TokenManager(){
        this.List = new ArrayList<TokenString>();
        this.wordnum = this.List.size();
    }

  在最後的課程中,我們努力使自己的程序效率更高,思考著更為精簡的方式,思考怎麽樣在要操作的文件容量急劇增加的同時,不必要消耗過高的內存過長的時間。

同時,在層出不窮的難題前學會翻閱別人的博客,學習別人的經驗和知識,接受新事物使用新工具。比如java自帶的排序方式和自帶的hashmap這樣高效的數據結構。

往往在使用這些工具的同時,就會產生一些新的問題需要我們去解決,比如怎樣將hashmap儲存的數據進行遍歷和排序輸出,

  在java的使用時也碰到過一些i問題,比如當使用eclipse的時候,由於所用電腦老化和內存較小等問題的存在,有時候使用eclips會陷入極其卡頓的情況,這時候關閉一些自動編譯的功能,在網上搜索類似修改eclipse.ini文件等等的方式,使用Java的時候也變得更加流暢,同時,產生一些自己解決不了的問題時候善於求助於網上的經驗和身邊的同學們,往往有時候自己無法弄明白的問題被點撥一下就會有茅塞頓開的感覺。

java中可以改寫的東西很多 比如hashcode比較方法,比如compareto方法,改寫可以用很少的代碼量進行高效的操作

如:

/*comparator.sort排序*/
        Collections.sort(this.List, new NameComparator());
        
        Iterator<TokenString> Iter = this.List.iterator();


import java.util.Comparator;

@SuppressWarnings("rawtypes")
public class NameComparator implements Comparator{
    public int compare(Object object1,Object object2){
        TokenString word1 = (TokenString)object1;
        TokenString word2 = (TokenString)object2;
        int result = word1.word.compareTo(word2.word);
        return result;
    }

}

稍微改寫一下compareto的規則,就可以對復雜的數據按照不同的規則進行排序。

例如Arraylist中的五個元素,ABCDE各自包括了數字,字符串等信息,就可以根據信息種類的不同設置多種comparator接口,

這樣當改變排序和比較規則的時候只需要更換一個比較器,而能夠保證改動很少的代碼,確保代碼的茁壯性。

面向對象的理念無異於使得多人完成同一工程的協調性大大增強,為了更好地達成協作,在使用java的過程中對自己的類名,方法名,變量名的使用就要極其小心才對,要養成良好的規範,也便於代碼的流通和重復使用。

封裝好的類和方法甚至不需要完全了解其中的工作原理和數據結構,只要明白輸入輸出的規範就可以妥善使用別人的類和方法,這其中也包括了java內置的hashmap等數據結構。可以說,面向對象編程的思想讓代碼之間的維護和使用變得更加暢通。

java學習心得