Java基础学习笔记三 Java基础语法
Scanner類
Scanner類屬于引用數據類型,先了解下引用數據類型。
引用數據類型的使用
與定義基本數據類型變量不同,引用數據類型的變量定義及賦值有一個相對固定的步驟或格式。
數據類型 變量名 = new 數據類型();每種引用數據類型都有其功能,我們可以調用該類型實例使用其功能。
變量名.方法名();Scanner類
Scanner類可以完成用戶鍵盤錄入,獲取到錄入的數據。
Scanner使用步驟:
導包:?import java.util.Scanner;?
創建對象實例:Scanner sc = new Scanner(System.in);?
調用方法:
int i = sc.nextInt(); 用來接收控制臺錄入的數字String s = sc.next(); 用來接收控制臺錄入的字符串了解完Scanner類,我們編寫代碼來使用下它:ScannerDemo01.java
import java.util.Scanner; public class ScannerDemo01 {public static void main(String[] args) {//創建Scanner引用類型的變量Scanner sc = new Scanner(System.in);//獲取數字System.out.println("請輸入一個數字");int n = sc.nextInt();System.out.println("n的值為" + n);//獲取字符串String str = sc.next();System.out.println("str的值為" + str);} }運行結果如下圖所示:
?
?隨機數類Random
用來產生隨機數的類Random,它也屬于引用數據類型。
這個Random類,它可以產生多種數據類型的隨機數,在這里主要介紹生成整數與小數的方式。
方法簡介
public int nextInt(int maxValue) 產生[0,maxValue)范圍的隨機整數,包含0,不包含maxValue;public double nextDouble() 產生[0,1)范圍的隨機小數,包含0.0,不包含1.0。?Random使用方式:
import導包:?java.util.Random ?
創建實例格式?:Random 變量名 = new Random();?
接下來,通過一段代碼,學習下Random類的使用,RandomDemo.java
import java.util.Random; public class RandomDemo {public static void main(String[] args) {// 創建Random類的實例Random r = new Random();// 得到0-100范圍內的隨機整數,將產生的隨機整數賦值給i變量int i = r.nextInt(100);//得到0.0-1.0范圍內的隨機小數,將產生的隨機小數賦值給d變量double d = r.nextDouble();System.out.println(i);System.out.println(d);} }運行結果如下圖所示:
?
流程控制語句
選擇結構if
?if語句
if語句是指如果滿足某種條件,就進行某種處理。
在Java中,if語句的具體語法格式如下:
if (條件語句){執行語句;……}上述格式中,判斷條件是一個布爾值,當判斷條件為true時,{}中的執行語句才會執行。
接下來通過一段代碼,學習一下if語句的具體用法,IfDemo01.java?
//定義了一個變量x,其初始值為5。在if語句的判斷條件中判斷x的值是否小于10,很明顯條件成立,{}中的語句會被執行,變量x的值將進行自增。從運行結果可以看出,x的值已由原來的5變成了6。public class IfDemo01 {public static void main(String[] args) {int x = 5;if (x < 10) {x++;}System.out.println("x=" + x);//x=6} }
if…else語句
if…else語句是指如果滿足某種條件,就進行某種處理,否則就進行另一種處理。if…else語句具體語法格式如下:
if (判斷條件){執行語句1…… }else{執行語句2…… }上述格式中,判斷條件是一個布爾值。當判斷條件為true時,if后面{}中的執行語句1會執行。當判斷條件為false時,else后面{}中的執行語句2會執行。
接下來通過一段代碼,來實現判斷奇偶數的程序,IfDemo02.java
public class IfDemo02 {public static void main(String[] args) {int num = 19;if (num % 2 == 0) {// 判斷條件成立,num被2整除System.out.println("num是一個偶數");} else {System.out.println("num是一個奇數");}} } //num是一個奇數上述代碼中,變量num的值為19,模以2的結果為1,不等于0,判斷條件不成立。因此會執行else后面{}中的語句,打印“num是一個奇數”。
if…else if…else語句
if…else if…else語句用于對多個條件進行判斷,進行多種不同的處理。if…else if…else語句具體語法格式如下:
if (判斷條件1) {執行語句1 } else if (判斷條件2) {執行語句2 } ... else if (判斷條件n) {執行語句n } else {執行語句n+1 }上述格式中,判斷條件是一個布爾值。當判斷條件1為true時,if后面{}中的執行語句1會執行。當判斷條件1為false時,會繼續執行判斷條件2,如果為true則執行語句2,以此類推,如果所有的判斷條件都為false,則意味著所有條件均未滿足,else后面{}中的執行語句n+1會執行。
接下來通過一段代碼,來實現對學生考試成績進行等級劃分的程序,IfDemo03.java
public class IfDemo03 {public static void main(String[] args) {int grade = 75; // 定義學生成績if (grade > 80) {// 滿足條件 grade > 80System.out.println("該成績的等級為優");} else if (grade > 70) {// 不滿足條件 grade > 80 ,但滿足條件 grade > 70System.out.println("該成績的等級為良");} else if (grade > 60) {// 不滿足條件 grade > 70 ,但滿足條件 grade > 60System.out.println("該成績的等級為中");} else {// 不滿足條件 grade > 60System.out.println("該成績的等級為差");}} } //該成績的等級為良上述代碼中,定義了學生成績grade為75。它不滿足第一個判斷條件grade>80,會執行第二個判斷條件grade>70,條件成立,因此會打印“該成績的等級為良”。
選擇結構if語句與三元運算轉換
三元運算符,它和if-else語句類似,語法如下:
判斷條件 ? 表達式1 : 表達式2三元運算符會得到一個結果,通常用于對某個變量進行賦值,當判斷條件成立時,運算結果為表達式1的值,否則結果為表達式2的值。
例如求兩個數x、y中的較大者,如果用if…else語句來實現,具體代碼如下:
int x = 0; int y = 1; int max; if (x > y) {max = x; } else {max = y; }可以替換為
int x=0; int y=1; int max = x > y ? x : y;switch語句
根據一個整數表達式的值, switch 語句可從一系列代碼選出一段執行。它的格式如下:
switch(整數選擇因子或者字符串或者枚舉) {case 整數值 1 : 語句; break;case 整數值 2 : 語句; break;case 整數值 3 : 語句; break;case 整數值 4 : 語句; break;case 整數值 5 : 語句; break;//..default:語句;92 }switch 能將整數選擇因子的結果與每個整數值比較。若發現相符的,就執行對應的語句(簡單或復合語句)。若沒有發現相符的,就執行default 語句。 示例:VowelsAndConsonants.java
public class VowelsAndConsonants {public static void main(String[] args) {char c = (char) (Math.random() * 26 + 'a');System.out.print(c + ": ");switch (c) {case 'a':case 'e':case 'i':case 'o':case 'u':System.out.println("vowel");break;case 'y':case 'w':System.out.println("Sometimes a vowel");break;default:System.out.println("consonant");}} }switch語句接受的數據類型
switch語句中的表達式的數據類型,是有要求的
- JDK1.0 - 1.4 數據類型接受 byte short int char
- JDK1.5 數據類型接受 byte short int char enum(枚舉)
- JDK1.7 數據類型接受 byte short int char enum(枚舉), String
case穿透
在使用switch語句的過程中,如果多個case條件后面的執行語句是一樣的,則該執行語句只需書寫一次即可,這是一種簡寫的方式。
例如,要判斷一周中的某一天是否為工作日,同樣使用數字1~7來表示星期一到星期天,當輸入的數字為1、2、3、4、5時就視為工作日,否則就視為休息日。如下所示。SwitchDemo02.java
上述代碼中,當變量week值為1、2、3、4、5中任意一個值時,處理方式相同,都會打印“今天是工作日”。同理,當變量week值為6、7中任意一個值時,打印“今天是休息日”。
循環語句
while語句
while循環語句和選擇結構if語句有些相似,都是根據條件判斷來決定是否執行大括號內的執行語句。區別在于,while語句會反復地進行條件判斷,只要條件成立,{}內的執行語句就會執行,直到條件不成立,while循環結束。while循環語句的語法結構如下:
while(循環條件){執行語句……… }在上面的語法結構中,{}中的執行語句被稱作循環體,循環體是否執行取決于循環條件。當循環條件為true時,循環體就會執行。循環體執行完畢時會繼續判斷循環條件,如條件仍為true則會繼續執行,直到循環條件為false時,整個循環過程才會結束。
接下來通過一段代碼,來實現打印1~4之間的自然數,WhileDemo.java
public class WhileDemo {public static void main(String[] args) {int x = 1; // 定義變量x,初始值為1while (x <= 4) { // 循環條件System.out.println("x = " + x); // 條件成立,打印x的值x++; // x進行自增 }} }//x = 1 //x = 2 //x = 3 //x = 4在上述代碼中,x初始值為1,在滿足循環條件x <=?4的情況下,循環體會重復執行,打印x的值并讓x進行自增。因此打印結果中x的值分別為1、2、3、4。
值得注意的是,代碼x++用于在每次循環時改變變量x的值,從而達到最終改變循環條件的目的。如果沒有這行代碼,整個循環會進入無限循環的狀態,永遠不會結束。
循環語句for
for循環語句是最常用的循環語句,一般用在循環次數已知的情況下。for循環語句的語法格式如下:
for(初始化表達式; 循環條件; 操作表達式){執行語句……… }在上面的語法結構中,for關鍵字后面()中包括了三部分內容:初始化表達式、循環條件和操作表達式,它們之間用“;”分隔,{}中的執行語句為循環體。
接下來分別用①表示初始化表達式、②表示循環條件、③表示操作表達式、④表示循環體,通過序號來具體分析for循環的執行流程。具體如下:
for(① ; ② ; ③){④ }- 第一步,執行①
- 第二步,執行②,如果判斷結果為true,執行第三步,如果判斷結果為false,執行第五步
- 第三步,執行④
- 第四步,執行③,然后重復執行第二步
- 第五步,退出循環
接下來通過一個案例對自然數1~4進行求和,如下所示。ForDemo01.java
public class ForDemo01 {public static void main(String[] args) {int sum = 0; // 定義變量sum,用于記住累加的和for (int i = 1; i <= 4; i++) { // i的值會在1~4之間變化sum += i; // 實現sum與i的累加 }System.out.println("sum = " + sum); // 打印累加的和 } }上述代碼中,變量i的初始值為1,在判斷條件i<=4為true的情況下,會執行循環體sum+=i,執行完畢后,會執行操作表達式i++,i的值變為2,然后繼續進行條件判斷,開始下一次循環,直到i=5時,條件i<=4為false,結束循環,執行for循環后面的代碼,打印“sum=10”。
do…while語句
do…while循環語句和while循環語句功能類似,其語法結構如下:
do {執行語句……… } while(循環條件);在上面的語法結構中,關鍵字do后面{}中的執行語句是循環體。do…while循環語句將循環條件放在了循環體的后面。這也就意味著,循環體會無條件執行一次,然后再根據循環條件來決定是否繼續執行。
接下來使用do…while循環語句來實現打印1~4之間的自然數DoWhileDemo.java。
public class DoWhileDemo {public static void main(String[] args) {int x = 1; // 定義變量x,初始值為1do {System.out.println("x = " + x); // 打印x的值x++; // 將x的值自增} while (x <= 4); // 循環條件 } }do …while循環和while循環能實現同樣的功能。然而在程序運行過程中,這兩種語句還是有差別的。如果循環條件在循環語句開始時就不成立,那么while循環的循環體一次都不會執行,而do…while循環的循環體還是會執行一次。若將DoWhileDemo.java中的循環條件x<=4改為x < 1,DoWhileDemo.java運行結果會打印x=1,而WhileDemo.java運行結果什么也不會打印。
無限循環
最簡單無限循環格式:
while(true){}或for(;;){}無限循環存在的原因是并不知道循環多少次,而是根據某些條件,來控制循環。
循環嵌套
嵌套循環是指在一個循環語句的循環體中再定義一個循環語句的語法結構。while、do…while、for循環語句都可以進行嵌套,并且它們之間也可以互相嵌套,如最常見的在for循環中嵌套for循環,格式如下:
for(初始化表達式; 循環條件; 操作表達式) {………for(初始化表達式; 循環條件; 操作表達式) {執行語句………}……… }接下來實現使用“*”打印直角三角形,如下所示。ForForDemo.java
public class ForForDemo {public static void main(String[] args) {int i, j; // 定義兩個循環變量for (i = 1; i <= 9; i++) { // 外層循環for (j = 1; j <= i; j++) { // 內層循環System.out.print("*"); // 打印* }System.out.print("\n"); // 換行 }} }運行結果如下所示:
在上述代碼中定義了兩層for循環,分別為外層循環和內層循環,外層循環用于控制打印的行數,內層循環用于打印“*”,每一行的“*”個數逐行增加,最后輸出一個直角三角形。由于嵌套循環程序比較復雜,下面分步驟進行詳細地講解,具體如下:
- 第一步,在第3行代碼定義了兩個循環變量i和j,其中i為外層循環變量,j為內層循環變量。
- 第二步,在第4行代碼將i初始化為1,條件i <= 9為true,首次進入外層循環的循環體。
- 第三步,在第5行代碼將j初始化為1,由于此時i的值為1,條件j?<= i為true,首次進入內層循環的循環體,打印一個“*”。
- 第四步,執行第5行代碼中內層循環的操作表達式j++,將j的值自增為2。
- 第五步,執行第5行代碼中的判斷條件j<=i,判斷結果為false,內層循環結束。執行后面的代碼,打印換行符。
- 第六步,執行第4行代碼中外層循環的操作表達式i++,將i的值自增為2。
- 第七步,執行第4行代碼中的判斷條件i<=9,判斷結果為true,進入外層循環的循環體,繼續執行內層循環。
- 第八步,由于i的值為2,內層循環會執行兩次,即在第2行打印兩個“*”。在內層循環結束時會打印換行符。
- 第九步,以此類推,在第3行會打印3個“*”,逐行遞增,直到i的值為10時,外層循環的判斷條件i <= 9結果為false,外層循環結束,整個程序也就結束了。
跳轉語句(break、continue)
跳轉語句用于實現循環執行過程中程序流程的跳轉,在Java中的跳轉語句有break語句和continue語句。接下來分別進行詳細地講解。
break語句
在switch條件語句和循環語句中都可以使用break語句。當它出現在switch條件語句中時,作用是終止某個case并跳出switch結構。當它出現在循環語句中,作用是跳出循環語句,執行后面的代碼。
接下來通過下面一段代碼,實現將當變量x的值為3時,使用break語句跳出循環,代碼如下所示。BreakDemo.java
public class BreakDemo {public static void main(String[] args) {int x = 1; // 定義變量x,初始值為1while (x <= 4) { // 循環條件System.out.println("x = " + x); // 條件成立,打印x的值if (x == 3) {break;}x++; // x進行自增 }} }在上述帶代碼中,通過while循環打印x的值,當x的值為3時使用break語句跳出循環。因此打印結果中并沒有出現“x=4”。
標記
當break語句出現在嵌套循環中的內層循環時,它只能跳出內層循環,如果想使用break語句跳出外層循環則需要對外層循環添加標記。接下來將ForForDemo.java稍作修改,控制程序只打印4行“*”,如下所示。BreakDemo02.java
public class BreakDemo02 {public static void main(String[] args) {int i, j; // 定義兩個循環變量AA: for (i = 1; i <= 9; i++) { // 外層循環for (j = 1; j <= i; j++) { // 內層循環if (i > 4) { // 判斷i的值是否大于4break AA; // 跳出外層循環 }System.out.print("*"); // 打印* }System.out.print("\n"); // 換行 }} }BreakDemo02.java與ForForDemo.java實現原理類似,只是在外層for循環前面增加了標記“AA”。當i>4時,使用break AA;語句跳出外層循環。因此程序只打印了4行“*”。
continue語句
continue語句用在循環語句中,它的作用是終止本次循環,執行下一次循環。接下來通過一個練習對1~100之內的奇數求和,ContinueDemo.java
public class ContinueDemo {public static void main(String[] args) {int sum = 0; // 定義變量sum,用于記住和for (int i = 1; i <= 100; i++) {if (i % 2 == 0) { // i是一個偶數,不累加continue; // 結束本次循環 }sum += i; // 實現sum和i的累加 }System.out.println("sum = " + sum);} } //sum = 2500上述代碼中,使用for循環讓變量i的值在1~100之間循環,在循環過程中,當i的值為偶數時,將執行continue語句結束本次循環,進入下一次循環。當i的值為奇數時,sum和i進行累加,最終得到1~100之間所有奇數的和,打印“sum = 2500”。
在嵌套循環語句中,continue語句后面也可以通過使用標記的方式結束本次外層循環,用法與break語句相似,在此不再舉例說明。
猜數字案例
案例介紹
猜數字案例是要完成什么樣的功能呢?顧名思義,這個游戲就是你出個數字、我來猜。
游戲操作如下:
后臺預先生成一個1-100之間的隨機數,用戶鍵盤錄入猜數字
如果猜對了,打印“恭喜您,答對了”
如果猜錯了
- 猜大了:打印“sorry,您猜大了!”
- 猜小了:打印“sorry,您猜小了!”
- 直到數字猜到為止
思路
1.通過Random類中方法nextInt(),生成一個1-100之間的隨機數
2.輸入猜的數字
3.通過while循環,進行猜數字對錯判斷
猜對,跳出循環,游戲結束
猜錯了,根據結果,給出提示,接著猜數字,游戲繼續
如果猜大了,打印sorry,您猜大了!繼續下一次循環
如果猜小了,打印sorry,您猜小了!繼續下一次循環
實現代碼步驟
分析完畢之后,完成代碼的編寫:GuessNumber.java
import java.util.Random; import java.util.Scanner;public class GuessNumber {public static void main(String[] args) { //1.通過Random類中方法nextInt(),生成一個1-100之間的隨機數int randomNumber = new Random().nextInt(100);System.out.println("隨機數已生成!"); //2.輸入猜的數字System.out.println("----請輸入您猜的數字:----");Scanner sc = new Scanner(System.in);int enterNumber = sc.nextInt(); //3.通過while循環,進行猜數字對錯判斷 //猜對,跳出循環,游戲結束while (enterNumber != randomNumber) { //猜錯了,根據結果,給出提示,接著猜數字,游戲繼續if (enterNumber > randomNumber) { //如果猜大了,打印sorry,您猜大了!繼續下一次循環System.out.println("sorry,您猜大了!繼續下一次循環");} else { //如果猜小了,打印sorry,您猜小了!繼續下一次循環System.out.println("sorry,您猜小了!繼續下一次循環");} //輸入猜的數字System.out.println("----請輸入您猜的數字:----");enterNumber = sc.nextInt();}System.out.println("恭喜您,答對了!");}}運行結果:
?
轉載于:https://www.cnblogs.com/ginb/p/7105719.html
總結
以上是生活随笔為你收集整理的Java基础学习笔记三 Java基础语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: switch omega - VNP
- 下一篇: Java命令学习系列