#結構 ##順序結構 JAVA的基本結構就是順序結構,除非特意指明,否則就按照順序,一句一句執行。 順序結構是最簡單的演算法結構 語句與語句之間,框與框之間按照從上到下的順序執行,它是任何演算法都離不開的基本演算法結構 ##選擇結構 if單選擇結構 if雙選擇結構 if多選擇結構 嵌套的if結構 swit ...
結構
順序結構
- JAVA的基本結構就是順序結構,除非特意指明,否則就按照順序,一句一句執行。
- 順序結構是最簡單的演算法結構
- 語句與語句之間,框與框之間按照從上到下的順序執行,它是任何演算法都離不開的基本演算法結構
選擇結構
- if單選擇結構
- if雙選擇結構
- if多選擇結構
- 嵌套的if結構
- switch多選擇結構
if選擇結構
if單選擇結構
很多時候需要判斷一個東西是否可行,然後才去執行,這樣一個判斷在程式中用if語句來表示。
語法:
- equals(比較字元):判斷字元串是否相等
這是舉例說明if單選擇的例圖,就是看是否和輸入的字元串相同
代碼如下:
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("請輸入內容:");
String s = scanner.nextLine();
if (s.equals("hello")){
System.out.println(s);
}
System.out.println("End");
scanner.close();
}
}
if雙選擇結構
語法:
假如我要判斷某個人考了多少分,算及格還是不及格,可以寫如下一串代碼:
import java.util.Scanner;
public class IfDemo02 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("請輸入成績:");
int score = scanner.nextInt();
if(score>=60){
System.out.println("及格");
}else{
System.out.println("不及格");
}
scanner.close();
}
}
例圖:
這就是if雙選擇結構,true有一個結果,false也有一個結果。
if多選擇結構
語法:
F=false,T=true
else if在if和else中間承接。
舉例如下,依舊是上一個例子,不過對細節進行了細化。
但是分數假如是小數,使用int會報錯,因此改為double或float
嵌套的if結構
- 使用嵌套的if……else語句是合法的。也就是說可以在if或else if中使用if或else if語句,可以像if語句一樣嵌套else if……else。
- 語法:
switch多選擇結構
- 多選擇結構除了if和嵌套if之外的另一種實現方式就是switch case語句。
- switch case語句判斷一個變數與一系列值中某個值是否相等,每個值稱為一個分支。
語法:
- switch中的變數類型及註意事項:
- 變數就是byte、short、int、char等八大基本類型
- 從Java SE 7開始,switch支持字元串String類型的變數
- 同時case標簽必須為字元串常量或字面量
case 穿透
switch 匹配一個具體的值
break 可選,停止迴圈
default 就是在上面的case中找不到傳入的值,會預設執行的語句
基本類型的展示
寫完一個case後如果並不想它都出現在所有情況下後面要加上break將它們分割開,需要穿透疊加操作時就可以不寫break。
比方說我這裡選定的是C,卻同時輸出了C與D,但是沒有輸出E,因為break將E隔開了。
字元串的展示
這裡我就將字元串與default的功能展示了出來
題外話
class 位元組碼文件
class文件沒法兒直接看懂,可以使用開發工具進行反編譯,比方說idea
- 首先如何查看已寫的代碼生成的class文件呢?
可以在idea社區版右上角的設置里打開項目結構,就能看到輸出文件夾的位置
- 將文件夾打開,找到自己想要進行反編譯的class文件
- 隨後打開代碼行的文件夾,將想要反編譯的class文件拖進去,就能看到想要反編譯的class文件的代碼內容了
- 也可以通過直接將class文件拖入idea實現上述操作
迴圈結構
- while迴圈
- do while迴圈
- for迴圈
- 主要用於數組的增強型for迴圈
while迴圈
while是最基本的迴圈,語法為:
- 只要布爾表達式為true,迴圈就會一直執行下去
- 大多數情況會讓迴圈停止,需要一個讓表達式失效的方式來結束迴圈
- 少部分情況需要迴圈一直執行,比如伺服器的請求響應監聽等
- 迴圈條件一直為true就會造成無限迴圈(死迴圈),正常的編程中應該儘量避免死迴圈。死迴圈會影響程式性能或造成程式卡死崩潰!
接下來進行一個輸出1~100的迴圈:
public class WhileDemo01 {
public static void main(String[] args) {
//輸出1~100
int i=0;
while (i<100){
i++;
System.out.println(i);
}
}
}
我這裡給了i<100的限制,因此i到了99就會停止執行,輸出結果為100
死迴圈就是沒有進行限定的,這樣的格式:
加法的運算:
do while迴圈
- 對於while語句而言,如果不滿足條件則不會進入迴圈。do...while迴圈和while迴圈類似,不同的是,do...while至少會執行一次。
語法:
- while是先判斷後執行,do...while是先執行後判斷。
剛剛那個1+2+3+...+100=?的例子同樣也能用do...while執行,並且執行結果沒有區別。
但是當我進行這樣一串代碼後就能明顯看出兩者的差別:
public class DoWhileDemo02 {
public static void main(String[] args) {
int a=0;
while (a<0){
System.out.println(a);
a++;
}
System.out.println("=================");
do {
System.out.println(a);
a++;
}while (a<0);
}
}
中間的“=”是我用來做分割的文本。
很顯然,“=”前為空,表示了while並沒有執行輸出a這個行為,而do...while執行了一次,因此輸出了基礎賦予的0的值,但因為沒有滿足條件,沒有輸出接下來的a++給予的賦值。
for迴圈
- 雖然所有迴圈都可以用while,do...while迴圈來表示,但java中還有一種語句:for迴圈——使一些迴圈結構變得更加簡單
- for迴圈語句是支持迭代的一種通用迴圈結構,是最有效最靈活的迴圈結構
- for迴圈的執行次數是在執行前就確定的,語法格式如下:
雖然和while迴圈一樣需要初始化,條件判斷與迭代,但是for迴圈的整體結構更為直觀,對比如下:
關於for迴圈的說明:
- 最先執行初始化步驟,可以聲明一種類型,可初始化一個或多個迴圈控制變數,也可以是空語句。
- 檢測布爾表達式的值,如果為true,迴圈體被執行,如果為false,迴圈終止,開始執行後續語句。
- 執行一次迴圈後,更新迴圈控制變數(迭代因數控制迴圈變數的增減)。
- 再次檢測布爾表達式,迴圈執行上面的過程。
這個代碼即為for迴圈的死迴圈,無初始值,無條件判斷與迭代:
for ( ; ; ){
}
for迴圈的展示
println輸出完會換行,print輸出完不會換行!!!
假如我要用for迴圈輸出1~1000之內能被5整除的數,並且每行輸出3個,就可以這樣輸入:
嵌套for迴圈的展示
輸出九九乘法表:
public class ForDemo04 {
public static void main(String[] args) {
for (int j = 1; j <= 9; j++) {
for (int i = 1; i <= j; i++) {//i<=9會有重覆輸出,因此這裡i<=j去掉重覆的輸出
System.out.print(j+"*"+i+"="+(j*i)+"\t");//用\t進一格
}
System.out.println();//System.out.print("\n")換行
}
}
}
增強for迴圈
增強for迴圈的語法:
- 聲明語句:聲明新的局部變數,該變數的類型必須和數組元素的類型匹配。其作用域限定在迴圈語句塊,其值與此時數組元素的值相等。
- 表達式:表達式是要訪問的數組名,或者是返回值為數組的方法。
如下這串代碼,上面的是普通for迴圈,下麵的是增強for迴圈,實現的操作是一樣的,都是將數組中的每個值都輸出一遍。- for迴圈:numbers[i]中i是次數,從numbers數組中取值的次數,就是取值了5次numbers中的數值
- 增強for迴圈:直接將數組的值賦予x
- 本質一樣,但是增強for更加簡化
public class ForDemo05 {
public static void main(String[] args) {
int[]numbers={10,20,30,40,50};//定義數組
for (int i = 0; i < 5; i++) {
System.out.println(numbers[i]);
}
System.out.println("===================");
for (int x:numbers){//遍曆數組元素
System.out.println(x);
}
}
}
輸出結果如下:
goto關鍵字
- 關於goto關鍵字:
- goto關鍵字很早就在程式設計語言中出現。儘管goto仍然是java的一個保留字,但並未在語言中正式使用,java沒有goto。然而,在break和continue這兩個關鍵字的身上,仍然能看出一些goto的影子——帶標簽的break和continue。
- “標簽”是指後面跟一個冒號的標識符,例如: label:
- 對java來說唯一用到標簽的地方是在迴圈語句之前。而在迴圈之前設置標簽的唯一理由是:我們希望在其中嵌套另一個迴圈,break和continue關鍵字通常只中斷當前迴圈,但若隨同標簽使用,它們就會中斷到存在標簽的地方。
- break在任何迴圈語句的主體部分,均可用break控制迴圈的流程。break用於強行退出迴圈,不執行迴圈中剩餘的語句。(break語句也在switch語句中使用)
- continue語句用在迴圈語句體中,用於終止某次迴圈過程,即跳過迴圈體中尚未執行的語句,接著進行下一次是否執行迴圈的判定。