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