五、變數、常量、作用域

靜態量(類變數)只能寫在類中,不能在外面,用static修飾。

final修飾的變數為常量。


六、運算子

Math類是一個工具類,用於複雜數學運算,它的構造器被定義成private,無法建立Math類的物件,Math類中所有的方法都是類方法,直接通過類名呼叫。

Math.max(a,b);

1、位運算子

2*8 = 16    2*2*2*2
效率極高!!!
<< 左移 *2 例:2<<3,左移三位
>> 右移 /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16

2、串連線符 +


七、包

定義:使用package定義包。-----------package 包名

匯入包:使用import----------------------import 包名

*是所有東西

建立遞進關係的包


八、JavaDoc命令生成自己的API文件


九、流程控制

1、使用者互動scanner類

Scanner s = new (System.in);
Scanner類的next()方法以空格結束與nextLine()方法以回車結束獲取輸入的字串,在讀取之前一般需要使用hasNext()與hasNextLine()判斷是否還有輸入的資料
public class Scan1 {

    public static void main(String[] args) {
//建立掃描器物件s,用於接收鍵盤資料
Scanner s = new Scanner(System.in); System.out.println("使用next接收:");
//判斷使用者是否輸入資料
if (s.hasNext()) {
//使用next()方法接收
String p = s.next();
System.out.println("輸入內容:" + p);
}
//凡是屬於IO流的類如果不關閉 會一直佔用資源,要養成好習慣用完就關掉
s.close(); }
}

2、順序結構

3、if選擇結構

  • if單選擇結構--if

  • if雙選擇結構--if else

  • if多選擇結構--

    if(){}
    else if(){}
    else{}
  • if巢狀結構--

    if(){
    if(){
    }
    }

4、switch多選擇結構

5、迴圈結構

for迴圈

for(初始化;判斷條件;迭代){
}

whlie迴圈

--先判斷後執行

do--whlie迴圈

--先執行後判斷,至少執行一次。

增強for迴圈

for(宣告語句:表示式)
{
程式碼句子
} 例:int[] num = {1,2,3};
for(int x: num){
System.out.println(x);
}

6、break

break用於強行退出迴圈,不執行迴圈中剩餘的語句。

7、continue

continue用於終止某次迴圈,接著進行下一次迴圈判斷。

8、標籤

標籤==goto

對Java來說唯一 用到標籤的地方是在迴圈語句之前。 而在迴圈之前設定標籤的唯一理由是:我們希望在其中巢狀另一個迴圈,由於break和continue關鍵字通常只中斷當前迴圈,但若隨同標籤使用,它們就會中斷到存在標籤的地方。

public class Demo07_Label {
public static void main(String[] args) {
//打101- 150之問所有的質數
int count = 0;
//不建議使用!
outer:for (int i = 101;i < 150;i++){
for (int j = 2; j < i/2;j++){
if (i %j== 0){
continue outer;
}
}
System.out.print(i+" ");
}
}
}

十、方法

設計方法的原則:方法的本意是功能塊,就是實現某個功能的語句塊的集合。我們設計方法的時候,最好保持方法的原子性,就是一個方法只完成1個功能,這樣利於我們後期的擴充套件

  1. 靜態方法--static

    1. 通過類.方法名直接呼叫
  2. 非靜態方法
    1. 例項化這個類再呼叫方法

1、方法的定義

  1. 方法包含一個方法頭和一個方法體。下面是一個方法的所有部分:
  2. 修飾符:修飾符,這是可選的,告訴編譯器如何呼叫該方法。定義了該方法的訪問型別。
  3. 返回值型別:方法可能會返回值。returnValueType 是方法返回值的資料型別。有些方法執行所需的操作,但沒有返回值。在這種情況下,returnValueType 是關鍵字void。
  4. 方法名:是方法的實際名稱。方法名和引數表共同構成方法簽名。
  5. 引數型別:引數像是一個佔位符。當方法被呼叫時,傳遞值給引數。這個值被稱為實參或變數。引數列表是指方法的引數型別、順序和引數的個數。引數是可選的,方法可以不包含任何引數。
  • 形式引數:在方法被呼叫時用於接收外界輸入的資料。
  • 實參:呼叫方法時實際傳給方法的資料。
  1. 方法體:方法體包含具體的語句,定義該方法的功能。
修飾符 返回值型別 方法名(引數型別引數名){
方法體
return返回值;
}
當不需要返回值是,返回值型別必須為void

2、方法呼叫

  1. 呼叫方法:物件名.方法名(實參列表)
  2. Java支援兩種呼叫方法的方式,根據方法是否返回值來選擇。
  • 當方法返回一個值的時候,方法呼叫通常被當做一個值。例如:

    int larger = max(30,40);
  • 如果方法返回值是void,方法呼叫一定是一條語句。

    System. out. println( “Hello,world!”);

3、方法過載

  1. 定義:過載就是在一個類中,有相同的函式名稱,但形參不同的函式。
  2. 方法的過載的規則:
  • 方法名稱必須相同
  • 引數列表必須不同(個數不同、或型別不同、引數排列順序不同等)。
  • 方法的返回型別可以相同也可以不相同。
  • 僅僅返回型別不同不足以成為方法的過載。
  1. 實現理論:

方法名稱相同時,編譯器會根據呼叫方法的引數個數、引數型別等去逐個匹配,以選擇對應的方法,如果匹配失敗,則編譯器報錯。

4、命令列傳參

有時候你希望執行一個程式時候再傳遞給它訊息。這要靠傳遞命令列引數給main()函式實現。

5、可變引數

  1. JDK 1.5開始,Java支援傳遞同類型的可變引數(不定項)給一個方法。
  2. 方法宣告中,在指定引數型別後加一個省略號(…)
  3. 一個方法中只能指定一個可變引數,它必須是方法的最後一個引數。任何普通的引數必須在它之前宣告

6、遞迴(能不用就不用)

  1. 遞迴就是: A方法呼叫A方法!就是自己呼叫自己
  2. 遞迴結構包括兩個部分:

    1.遞迴頭:什麼時候不呼叫自身方法。如果沒有頭,將陷入死迴圈。

    2.遞迴體:什麼時候需要呼叫自身方法。

7、實參與形參

   public static void main(String[] args) {
add(2,3);////這裡的2,3是實參
}//實參與形參的型別要對應!!
public static void add(int a,int b){///a,b是形參
System.out.println(a+b);
}
}

8、值傳遞與引用傳遞

  1. 值傳遞
public class CaoGao {
public static void main(String[] args) {
int a= 1;
System.out.println(a);
CaoGao.change(a);
System.out.println(a); }
public static void change(int a){//返回為空沒有改變成員變數
a = 10;
}
}
結果:1 1
  1. 引用傳遞
public class CaoGao {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);//null CaoGao.change(person); System.out.println(person.name);//葫蘆娃 } public static void change(Person person) {
//person是一個物件:指向的-->Person person = new Person();可以改變屬性
person.name = "葫蘆娃";
}
}
class Person{
String name;
}