JAVASE初級筆記

  第一步:新建一個文本文檔,文件名爲Hellojava

  第二步:修改文件後綴名爲 .java數組

  第三步:在Hello.java文件中,寫入這樣一段代碼:ide

public class Hello{工具

      public static void main(String args[]){網站

           System.out.println("作人沒有夢想,那跟鹹魚有什麼分別");this

      }spa

}指針

 

 

 

 

 

 

  注意:代碼中的中括號大括號分號等,都必須是英文字符調試

  第四步:打開一個DOS窗口,使用javac命令編譯java源文件對象

  注意:使用javac命令的前提是要正確的配置path環境變量

  第五步:確保生成Hello.class文件,使用java命令運行字節碼文件

if(a[i] > a[j]) {        int t = 0 ;

    t = a[i];

    a[i] = a[j];      a[j] = t;

}大括號內的語句都屬於if語句塊

 

 

  幾款代碼編輯工具

  UltraEdit、Notepad++、EditPlus

 

  變量:intx=4;

n 局部變量:

u 定義在方法內的變量,或語句塊內的變量

u 局部變量必須賦初始值,不然沒法使用。

n 成員變量:

u 定義在類裏面,方法的外面,屬於對象,每一個對象擁有本身的成員變量,互相不衝突

u 成員變量未初始化時,系統會自動初始化,給默認值。

n 靜態變量:(也叫類變量)

u 定義在類裏面,方法的外面,static關鍵字修飾。屬於類,全部對象共享一個變量

n 常量: final int y = 6;

  JAVA的命名規範:

n 不可跟關鍵字重複

n 只能包含數字、字母、下劃線、$,其中數字不能夠開頭

  關鍵字:

  數據類型:

 

 

 

 

 

 

 

 

n 分爲兩大類:基本數據類型和引用數據類型

n 引用類型的變量也叫指針,它保存了一個對象的內存地址

n Student  stu =  new Student();

stu 就是引用變量,把一個對象賦給stu,也就意味着stu此刻保存了對象的地址。咱們能夠經過stu來調用這個對象的方法,或者訪問對象的屬性。

注意引用變量也是有類型區分的,stu 的類型是Student,所以有時咱們會說stu這個對象是Student類型的。

 

 

 

 

 

 

 

 

  基本數據類

n Int 整數型 4字節

n Short 短整型 2

n Byte 字節型 1

n Long 長整型 8

n Float 單精度浮點型 4

n Double 雙精度浮點型 8

n Char 字符型 2

n Boolean布爾型 1

  類型轉換

u char型、short型、byte型運算時,只能轉換爲int型

u 自動轉型(類型的自動提高)的原則範圍由小到大、精度由低到高

u int a =4, b=5;

u (float) (a*b) 注意在類型轉換時,運算的優先級:

u 若是寫成了(float)a*b,則會先把a轉成float類型再與b進行計算,那跟咱們想要的結果就不同了,所以這裏要特別當心。

  轉義字符: \反斜線加上字符

n \t         \n        \\         \」

  運算符:

n 算術運算符

u + 、-、*、/、% 取模 求餘數

n 關係運算符

u >、<、==、!=、>=、<=、

n 一元運算符

u +、-、~、!

n 賦值運算符

u =

n 邏輯運算符

u &&、|| 、!

n 遞增、遞減運算符

u ++、--

n  三目運算符

u (布爾表達式) ? 表達式1 : 表達式2

u 布爾表達式的值爲真時,運算結果爲表達式1,不然結果爲表達式2

u 例1: (a == 30)  ?  x +=5 : x = 0;

l 若是a等於30,則執行x+=5,不然執行x=0;

u 例2:String str = (a == 30)  ?  「哈哈」 : 「呵呵」 ;

l 若是a等於30,str的值是 哈哈,不然 呵呵

  運算符的優先級關係

 

  if語句的使用

n  If語句接受一個邏輯表達式,判斷真假

if(a>30) {

    System.out.println("aaaa");

} else if(a < 25){

    //………

}

 

 

 

 

   

 

  switch語句

n  只能作等值的判斷(==),而且只能判斷int變量或能夠轉換成int型的變量

n  當心case穿透,記得要加break語句

n  注意理解if和switch的用法上的區別,理解它們的使用場合

 

char c = 'm';

switch(c) {

    case 'x' : {

System.out.println("x");

System.out.println("x");

break;

}

    case 'm' : System.out.println("m"); break;

    case 'z' : System.out.println("z"); break;

    default : System.out.println("默認狀況");

}

 

 

 

 

 

 

 

 

 

  While循環

int i = 0;

while(i<100/*循環條件*/) {

    System.out.println("循環第"+i+"次");

    i++;

}

 

 

 

 

 

dowhile循環:第一次執行循環體,不判斷條件!

  For循環

n  99乘法表

for (int i=0; i<=10; i++){

      System.out.println(i);

}

//打印出i的值,觀察結果

第一步:創建一個for循環

u  


 

for (int i=0; i<=10; i++){

      for(int j=0; j<=10; j++){

           System.out.println( i );

           System.out.println( j );

}

}//打印出i的值,觀察結果, 打印j的值觀察結果

第二步:創建循環嵌套

u  




 

for (int i=0;i<=10;i++){

      for(int j=0; j<=i; j++){

           System.out.println( i );

           System.out.println( j );

}

}//再觀察結果

//打印出i的值,觀察結果

第三步:修改子循環的循環條件,讓子循環的次數變成動態值

u  





 

  break語句和continue語句

n  break: 終止當前循環體,或switch 語句塊

n  continue:終止本次循環,直接進入下一次循環

  DEBUG跟蹤調試程序

n  第一步設置斷點

n  第二步以DEBUG模式來運行程序

 

int[] a = {23, 99, 8, 10};

int[] b = a;

數組的內存結構

 

堆內存

0

1

2

3

23

99

8

10

棧內存

a

#9852

b

#9852

 

注意!數組的下標從0開始

數組裏存放的整型數

 

 

 

 

 

 

 

 

 

 

 

 

  數組  若干相同類型的數據的集合

n  double[]  arr = new double[5];

n  double[]arr = {2,6,3,7,8};

n  double[]arr = new double[]{2,6,3,7,8};

n  arr.length得到數組的長度

n  數組的下標從0開始  因此arr[2] 表明數組的第三個元素

  二維數組 一個存放數組的 一維數組

n  int[][]arr = new int[5][5];

arr[0]= new int[5];[A1] 

n  int[][] arr2  =  { {1,2,3}, {2,4,5},  {5,6,7},  {1},  {4,4,4,4}};

n  arr2[0] 表明第一個子數組   也就是 {1,2,3}

n  因此要訪問子數組的第三個元素,應該:arr2[0][A2] [2]

堆內存

0

1

2

3

棧內存

arr

 

1

2

3

 

2

4

5

arr[0]

arr[1]

arr[2]

arr[3]

 

 

 

 

 

 

 

 

 

 

 

  多維數組

n  int[][][][]  arr = new int[5][4][3][2];

  冒泡排序、選擇排序法、快速排序

n  數組元素的交換  有元素a、b、

u  首先定義一個臨時的變量temp

u  temp= a;
a = b;
b = temp;

  加強for循環(for-each)

Product[]  plist = {new Product(), new Product(), new Product()};

for( Product  p  :  plist) {

       p.toString();

}

//加強for循環寫起來很簡便,但也有缺點,因爲它不像for循環有循環變量,所以咱們沒法經過下標去訪問數組,可是,對於上面這個加強for 循環來說,操做對象p,一樣能夠改變數組裏面的對象的屬性,這是爲何呢?

 

 

 

 

 

 

 

  面向對象的基本思想

n  從傳統的面向過程發展而來的。

n  面向過程的思惟:

u  第一步買菜,第二步洗菜,第三步切菜,第四步炒菜

n  面向對象的思惟:


對象

第一步採購員 完成本職工做

u  第二步幫廚     完成本職工做

u  第三步案板      完成本職工做

u  第四步大廚     完成本職工做

n  把不一樣的工做交給不一樣的角色(對象)來處理,每一個對象負責本身的工做。這個過程當中還體現出了封裝的概念!

n  類和對象

u  類就是一個模板,或者能夠看作是咱們本身定義的數據類型

u  對象就是利用模板建立的一個具體事物,或者能夠看作是使用自定義數據類型聲明出來的變量,在JAVA中咱們把對象叫作一個類的實例

n  如何定義一個類?

public  class  Product {

       public  static  int  num = 10;

}

 

 

 

 

 

l  成員變量: 普通的成員變量和靜態成員變量(類變量)

n  類變量是全部對象共享的,能夠經過類名直接訪問:

n  Product.num 而不須要構造對象

l  如何建立一個對象

n  類名  對象名 = new 類名();

n  Product  p1 = new Product();

l  Product()被稱之爲構造方法,它是一個很特殊的方法:

n  構造方法名必須和類名相同

n  構造方法不能夠寫返回值類型

n  構造方法默認狀況下不須要顯示的去聲明,系統幫咱們默認建立

n  調用構造方法必需要跟new關鍵字配合

n  系統默認建立的構造方法是無參的

n  一旦咱們定義了任何一個構造方法,系統默認的會自動失效

n  構造方法能夠同時定義多個:在JAVA中,同一個類裏,多個方法名稱相同,爲了區別,要求參數不能同樣,這種形式叫作方法重載

l  類的繼承

public  class  Product  extends  Object{

       public  static  int  num = 10;

}

 

 

 

 

n  繼承的最大做用是可以讓子類擁有父類的方法和屬性,全部子類都遵循父類的特性,而且在父類的方法不能知足需求的時候,咱們能夠經過重寫覆蓋父類的屬性和方法。

n  同時,繼承在某種程度上說,也是一種分類的方式,咱們說類是一種模板,經過類來構造對象。那麼模板也是有分類的。

n  例如:動物類能夠分爲:無脊椎動物和脊椎動物
其中脊椎動物又分爲魚類、兩棲類、爬行類、鳥類、哺乳類等。
有了繼承,分類能夠更加明細,更加清晰

n  [A3] 子類繼承父類的屬性和方法

u  靜態屬性是不繼承的

u  私有屬性子類不可以直接訪問

u  JAVA當中只有單繼承

u  建立子類對象的時候,在調用子類構造方法的時候,會先調用父類的構造方法

u  若是父類還有父類,會從最頂層的父類構造方法開始調用,一直到子類的構造方法

n  子類繼承父類的屬性和方法,均可以本身重寫,重寫以後,覆蓋父類的方法,這個叫作方法的重寫

n  權限修飾符:private  public protected  默認(什麼都不寫)

修飾符

同一個類

同一個包

子類

不一樣包

Public

Protected

 

默認

 

 

Private

 

 

 

n  類的封裝

u  將某些屬性或方法設爲私有的,防止外界直接訪問
提供一個公有的方法,讓外界經過公有方法間接訪問

u  封裝的主要目的其實在於隱藏,隱藏沒必要要的細節過程。例如一臺電腦,內部結構異常的複雜,生產廠商將內部的細節封裝起來,咱們只能經過鼠標和鍵盤來操做電腦,這樣的好處在於,咱們沒必要了解其內部的複雜構造,而只須要鍵盤簡單的操做就可使用電腦。

u  再好比一臺汽車,咱們操做一臺車只能經過油門、剎車、方向盤。其餘的細節內容都被封裝了起來,發動機內部到底作了什麼事情,咱們沒法得知,固然咱們也不肯意去關心那些細節問題,咱們只須要會使用油門和方向盤就足夠了,這不正是封裝帶來的好處麼?

n  [A4] super、this分別表明:

u  super表明了父類對象的引用

u  this表明了當前對象的引用

n  static關鍵字

u  用static修飾的變量和方法,叫作靜態變量或靜態方法,從屬於類,能夠經過類名直接調用。

n  package關鍵字

n  import關鍵字

n  final關鍵字

u  修飾變量:變量的值不能夠改變!而且必須在定義的時候賦初值

u  修飾方法:這個方法將不可以被子類重寫

u  修飾類:該類將不可以被繼承

l  類的多態:能夠理解爲多樣性,或多種表現狀態

n  方法的重載也算是多態的一種表現形式

n  方法的重寫一樣能夠表現出多態的特性

n  舉例:

      父類   ss =  new 子類();

子類被轉型成父類,因爲父類的層次比子類高,所以這裏能夠進行自動轉型。無需手動干預。

轉型以後,ss爲父類的引用,此時ss只能調用父類的方法,子類特有的方法,ss無權調用。

只有一種特殊狀況可使用子類的方法,就是父類中的方法被子類重寫,此時父類方法被覆蓋,就能夠調用子類方法。

舉例:

 

public class Animal {

    public int attack = 100;//攻擊力

   

    public void sound() {//聲音

       System.out.println("Animal sound");

    }

}

 

 

 

 

     

     

有父類Animal,包含一個方法名稱爲sound

子類重寫父類的sound方法

public class Cat extends Animal {

    @Override

    public void sound() {

       System.out.println("喵喵");

    }

    public void catchMouse() {

       System.out.println("抓老鼠");

    }

}

 

 

 

 

 

 

 

 

此時如有父類引用指向了一個子類對象cat

Animal  animal =  new  Cat();

父類引用調用sound方法,執行的仍然是子類對象的sound方法

   這時,sound方法所表現出來的結果,是多種多樣的,根據子類的不一樣,獲得的結果也不一樣。一樣都是sound 方法,卻有多種結果能夠出現。咱們將這種情形稱之爲多態。

   因此說重載、重寫都是多態的表現,也就是說方法名稱相同,但具體操做不一樣。好比咱們說「吃」這個字,在不一樣的狀況下咱們能夠有多種含義,例如:吃飯、吃釘子、吃官司等,具備相同的名稱,但具體的操做卻不同。再好比「開」這個字,開車、開窗、開飯、開局等等。

瞭解更多詳情請登陸超人學院網站http://www.crxy.cn或者每週日晚八點半相約免費公開課 https://ke.qq.com/course/53102#term_id=100145289  具體詳情請聯繫QQ2435014406

相關文章
相關標籤/搜索