五、變數、常量、作用域
靜態量(類變數)只能寫在類中,不能在外面,用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個功能,這樣利於我們後期的擴充套件。
- 靜態方法--static
- 通過類.方法名直接呼叫
- 非靜態方法
- 例項化這個類再呼叫方法
1、方法的定義
- 方法包含一個方法頭和一個方法體。下面是一個方法的所有部分:
- 修飾符:修飾符,這是可選的,告訴編譯器如何呼叫該方法。定義了該方法的訪問型別。
- 返回值型別:方法可能會返回值。returnValueType 是方法返回值的資料型別。有些方法執行所需的操作,但沒有返回值。在這種情況下,returnValueType 是關鍵字void。
- 方法名:是方法的實際名稱。方法名和引數表共同構成方法簽名。
- 引數型別:引數像是一個佔位符。當方法被呼叫時,傳遞值給引數。這個值被稱為實參或變數。引數列表是指方法的引數型別、順序和引數的個數。引數是可選的,方法可以不包含任何引數。
- 形式引數:在方法被呼叫時用於接收外界輸入的資料。
- 實參:呼叫方法時實際傳給方法的資料。
- 方法體:方法體包含具體的語句,定義該方法的功能。
修飾符 返回值型別 方法名(引數型別引數名){
方法體
return返回值;
}
當不需要返回值是,返回值型別必須為void
2、方法呼叫
- 呼叫方法:物件名.方法名(實參列表)
- Java支援兩種呼叫方法的方式,根據方法是否返回值來選擇。
- 當方法返回一個值的時候,方法呼叫通常被當做一個值。例如:
int larger = max(30,40); - 如果方法返回值是void,方法呼叫一定是一條語句。
System. out. println( “Hello,world!”);
3、方法過載
- 定義:過載就是在一個類中,有相同的函式名稱,但形參不同的函式。
- 方法的過載的規則:
- 方法名稱必須相同。
- 引數列表必須不同(個數不同、或型別不同、引數排列順序不同等)。
- 方法的返回型別可以相同也可以不相同。
- 僅僅返回型別不同不足以成為方法的過載。
- 實現理論:
方法名稱相同時,編譯器會根據呼叫方法的引數個數、引數型別等去逐個匹配,以選擇對應的方法,如果匹配失敗,則編譯器報錯。
4、命令列傳參
有時候你希望執行一個程式時候再傳遞給它訊息。這要靠傳遞命令列引數給main()函式實現。
5、可變引數
- JDK 1.5開始,Java支援傳遞同類型的可變引數(不定項)給一個方法。
- 在方法宣告中,在指定引數型別後加一個省略號(…)。
- 一個方法中只能指定一個可變引數,它必須是方法的最後一個引數。任何普通的引數必須在它之前宣告。
6、遞迴(能不用就不用)
- 遞迴就是: A方法呼叫A方法!就是自己呼叫自己
- 遞迴結構包括兩個部分:
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、值傳遞與引用傳遞
- 值傳遞
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
- 引用傳遞
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;
}