JAVA學習筆記(一)

來源:互聯網
上載者:User

進入培訓班第一天,開始記錄下一些筆記,也算是記錄學習的軌跡吧,更新時間會比較長。

1.在for迴圈中,迴圈部分只出現在花括弧中“{}”,即所謂的迴圈體。

2.return的用法:
        ①傳回值
        ②結束程式運行

3.eclipse的快速鍵:
        ①輸出void main方法:輸入main + Alt+ ?

        ②輸出System.out.println方法:輸入syso+Alt+?


4.對於if語句,若其後沒有花括弧,則只能對一行起作用。

   如:

if(i<5)          i++;          j+=i

    則隻影響i++那一行。


5.  java的記憶體機制。

基礎類型(byte,short,int,long,float,double,char,boolean)只佔一塊記憶體,除此之外的都叫參考型別。參考型別不同之處在於要佔兩塊記憶體。

如:String s = new String("hello");

相當於String s;    s = new
String("hello"); 分兩步進行。

第一步String s 是現在記憶體中分配一塊記憶體,所存值為null,因為還沒有對s進行初始化

第二部 s = newString("hello");這時再在記憶體中分配一塊記憶體(並且位於堆記憶體中,所有new出來的東西都在堆記憶體中,堆記憶體是動態分配的),得到真正的hello值,由s指向hello,相當於指標。

6.   this的簡單用法

this表示對static方法可以直接從普通方法(regular method)中調用,但是普通方法不能直接從static方法中調用類內部中對自己的引用,方便類中方法訪問自己的屬性。

如

class a{    int a;    int b;        public void getA(int a,int b){        this.a = a;        this.b = b;    }

與下邊的功能相同

class a{int a;int b;public void getA(int _a,int _b){a = _a;b = _b;}}

7. static方法的簡介

static方法可以直接從普通方法(regular method)中調用,但是普通方法不能直接從static方法中調用,這是因為
普通方法是對象的方面,static是類方法。類載入在前,對象執行個體化在後。

8.封裝的簡要應用

如若父類A中有private a1();         default a2();     protected a3();      public a4()      這四種方法。

則子類B【不管與A在不在同一個包中】繼承A後,若想使用a3方法,則只能使用super方法。而對於a4(),直接使用也行,利用super方法也行。

9. 重載與重寫的區別
重寫指的是子類覆蓋父類的方法,用於繼承中
①重載指的是一個方法名對應多個方法;
②什麼情況構成重載?形參列表不同(類型、個數不用)
③形參名稱不同、傳回值不同不構成重載

10.編程時,一般情況下,成員變數都必須私人,以private修飾,然後使用set/get方法

  對於set和get方法,set沒有傳回值,但有形參;get有傳回值,無形參。例如:

   private int[] score;
   其對應的set/get方法為:

  

public void setScore(int[] score){this.score = score;}public int[] getScore(){return score;}

然後

int[] score = {1,2,3,4};s.setScore(score);

列印時用

System.out.println(s.getScore()[0]);

不要丟了s.getScore()後的[0],這個必須有,因為定義getScore()方法時就已經限制其前邊為數組號。也可寫為

public int getScore()[]{return score;}

11.String為不可變字元序列
     StringBuilder:可變字元序列,線程不安全,效率高
     StringBuffer:可變字元序列,安全執行緒,效率低
     盡量不要使用
     String b = "a" + "c";
     這種形式,因為String為不可變字元序列,會在記憶體建立很多變數,效率低下,也浪費記憶體。而StringBuilder             和  StringBuffer只會建立一個,效率高,佔用記憶體也少。

12.String方法中,substring()截取字串時是掐頭不掐尾,比如:

String str1 = "abcdefg";String str2 = str1.substring(2,4);

    則str2為cd
     trim()只是去迴轉部和尾部的空格,字串內部的不管


13.類似
     String str = "a";
     建出來的都為字串常量,它不是new出來的位於方法區[記憶體中有棧、堆、方法區],而對於

String a1 = new String("a");String a2 = new String("a");

     這種的,由於new出來的都位於堆記憶體,所以兩個"a"雖然內容相同,但處於不同的位置。

System.out.println(a1 == a2);為falseSystem.out.println(a1.equals(a2));為true

     因為a1和a2指向了不同的新的字串變數

String a3 = "b";String a4 = "b";

這種的,"b"位於方法區,並且兩次都指向的為同一個,所以

System.out.println(a3 == a4);為trueSystem.out.println(a3.equals(a4));為true

因為a3和a4指向了常量池中的同一個對象

14.數組一旦被建立,它的長度就不能改變。並且聲明數組時,不能指定其長度,只有在執行個體化時才會分配空間。
     如:int[5] a;   就是非法的。


15.數組的三種初始化方法

   ①靜態初始化

int[] a = {1,2,3};//靜態初始化的省略寫法Man[] mans = {new man(1,2),//注意為逗號而不是分號new man(2,3)      };

靜態初始化的完整寫法為:

 

int[] arr = new int{1,2,3};

此時可分開寫:

int[] arr;arr = new int{1,2,3};

但簡略寫法卻不能這樣寫

int[] arr;arr = {1,2,3};//會報錯

  ②動態初始化    

int[] a = new int[2];a[0] = 1;a[1] = 2;

    ③數組的預設初始化

int[] a = new int[2];//預設值為0,0boolean[] b = new boolean[2];//預設值為false,false

16.介面是一種抽象的類,只包含常量和抽象方法,沒有變數和方法的實現

17.多態是指父類的引用可以指向子類的對象.在使用時,new的誰就調用誰的方法,這就是動態綁定(也叫多態).
A a2=new C();--------A 的引用a2 指向newC;所以a2.m1是調用C類裡的m1()方法;

18.表示年月日一般用yyyy-MM-dd,其中MM不能小寫,因為m表示分鐘

 

19.補充:String與StringBuilder的區別

舉個例子:

string s="aa"; s +="bb"; 則記憶體中存在了aa  bb  aabb 三個
stringbuilder ss="aa"; ss.Append("bb")。則記憶體中只有兩個 "bb"和"aabb" 此處少了一個"aa",其實是因為stringbuilder是可變的,"aa"變成了"aabb",而不是重新分配 新空間。

為什麼是stringbuilder比string好,還是存在string。因為stringbuilder是參考型別的,一開始分配的 時候需要比較多的空間,而string是實值型別的。這個有點struct與class的利害比較了。如果不是頻繁拼接的情況下,string的效能明顯 好於stringbuilder,所以如果頻繁拼接就用stringbuilder,如果是展現那麼用string。

20.容器中判斷重複元素不是利用地址比較,而是equals和hashcode方法
     對於自動裝箱和拆箱,在1.5以後就可以無視int和Integer的差別了,直接套用就行

   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.