c 结构体在声明时赋值_Java基础知识 初识Java 循环结构进阶 数组 数据类型 各种运算符...
今天給大家帶來的是初級Java基礎部分的知識:包括初始Java、變量、常量、數據類型、運算符、各種選擇結構、循環結構、數組等Java的基礎語法部分!最后還有****循環結構的進階****,步驟超詳細,
值得收藏(??????)??!!!
另附有各種案例的源代碼(可以直接用O(∩_∩)O~)!!!仔細看完它,扎實的基礎不再是空談,萬丈高樓平地起,當有了扎實的基礎知識,后面學習面向對象以及項目的開發時,壓力就減少了很多,所以基礎知識不能被輕易的忽略!!!給個關注奧
一、初識Java
使用記事本開發程序的步驟(注意:整個操作過程都是英文):
1 編寫源程序
首先新建一個文本文件,修改其后綴名為“.java" ---->然后再里面編寫我們需要的代碼
??public??class??HelloWorld{????public??static??void?main(string[] args){???????system.out.println("Hello Java!!!");???}}public:公共的公開的,處處可以訪問。
class:類,類別,類似狗狗類,電腦類等。
HelloWorld:類名稱,有一個要求,必須和文件名稱保持一致
public static void main(String[] args){} ---->>> 入口方法,所有需要運行的代碼都需要放到這里來,固定寫法
static:關鍵字(計算機中已經使用的名字,我們就不能再使用)
void:返回值類型,void表示沒有返回值
main:是入口方法的方法名
易錯點:
①大括號要成對出現
②String中的”s”要大寫
③我們在每一句話之后都需要使用英文的分號結束
④System中的”s”需要大寫
⑤類名需要和文件名保持一致
所有的輸出內容需要在引號里面
2 編譯源程序
因為編寫的是我們人寫的,但是計算機是看不懂的,所以需要一個“翻譯” 編譯成一個 ".class" 結尾的文件(半機器語言)。我們在dos命令中進入到文件所在目錄,輸入命令 javac xxx.java 類編譯同時會生成一個以“class”結尾的字節碼文件
3 運行
編譯成功之后,即可運行,輸入 java xxx 即可.在控制臺即可出現在打印語句中雙引號中的內容了(所有需要打印的內容都需要在雙引號中)
符號的含義:
:一個制表符的空格
:換到下一行的初始位置
注釋的作用:解釋說明,不會被編譯運行單行注釋: //多行注釋: /* */文檔注釋: /** */
二、變量,常量,數據類型和運算符
1.變量
引入:人的計算是在大腦中進行的,計算機的計算是在內存中進行的,內存就好比酒店根據人員的多少開辟適當大小的空間(單人OR雙人,來存儲各種數據。
誕生:內存中的每個空間都是相互獨立的,且都有自己的地址值。
找數據:存入數據并不是目的,我們最主要的是存入了方便之后的使用。每個空間都是有其地址值,地址值是相對比較長且不好記憶的,我們可以像賓館樣給每個空間(房間)起一個名字,這個空間有自己的名稱(變量名)和類型(數據類型)
1.1 定義:
一個存儲空間的表示,其值是可以變化的。(例如買了一雙鞋,鞋盒用來孵小雞,鞋盒就是變量,鞋子和小雞是里面的值。)
通過變量名可以簡單快速的找到它存儲的數據!!!
1.2 為什么使用變量
案例:
// System.out.println("好好學習");// System.out.println("好好學習");// System.out.println("好好學習");// System.out.println("好好學習");???//.....???//現在我想寫好好學習天天向上,那我需要對每一個輸出語句進行修改,很麻煩???//其實我們是可以避免這種情況的出現的,就是使用變量?String str="好好學習,天天向上";?System.out.println(str);?System.out.println(str);?System.out.println(str);//像以上的情況,我們只需要修改一處即可,這就是變量的好處
1.3 使用步驟:
第一步:聲明變量(聲明變量的時候變量名不能重復)
即根據數據類型在內存申請空間
數據類型 變量名;int money;(int是數據類型,money是變量名)
第二步:賦值
即將數據存儲在對應的內存空間
變量名=數值; money=1000;
上面兩步可以合二為一
int money =1000; 其含義是:在內存中開辟了一個int類型的空間,給其命名為money,并為其賦值為1000;
第三步:使用
即取出數據
注意:
在聲明變量的時候變量名不能重復
當在程序中使用“+”的時候,符號左右兩側如果有一個數據是字符串則將兩個值拼接(如果后面有多個“+”則將多個值拼接),如果都是數值型則計算和
1.4 命名的規則
一個好的命名規范是一個程序員必備的素質,不遵守規范不一定會錯,但一定會被鄙視。(凡是自己起的名字都要遵守以下規范) 1. 以數字,字母,下劃線和$符號組成,其中不能以數字開頭; 2.不能和java中的關鍵字重名; 3.盡量遵守見名知意和駝峰命名(有多個單詞首個單詞首字母小寫后面單詞首字母大寫)規則。
public?static?void?main(String[] args) { //1聲明????????int?money;?????????????????//2賦值????????money=100;????????/**?????????* 第一第二兩步合并?????????* 聲明變量的時候變量名不能重復???????????*/????????int?m =?100;?????????????????String name="張三";????????int?age =27;????????double?score=89.0;????????//是否及格? 使用 true :? 及格???? false:不及格????????boolean??flag =true;?????????????????//3使用????????System.out.println("和"+age+score);????????System.out.println("金額::"+money);????????System.out.println("姓名:"+name);????????System.out.println("年齡:"+age);????????System.out.println("分數:"+score);????}1.5 常見錯誤
未聲明且賦值直接使用
標記位置序錯誤
在同一個作用域中聲明了相同名字的變量名
2.常量
2.1 為什么使用常量
在實際開發和生活中有些值是一開始定義了在后面就不能修改的,如:圓周率
2.2 定義:
一個存儲空間的表示,其值是不可以發生變化的。
final修飾常量,final修飾的值在聲明的時候就賦值且后面不能改變(在數據類型前加final 如 final int)
2.3 優點:
一旦定義后期不能修改,所以其是相對安全的
2.4 命名規則:
優點:
一旦定義后期不能修改,所以其實相對安全的推薦做法:
常量名通常大寫;
只能被賦值一次,通常定義時即對其初始化
常量名都要大寫,如果是多個單詞組成,則使用下劃線分割
public?static?void?main(String[] args) {????????// TODO Auto-generated method stub/**?* 常量的案列演示?* 計算圓的面積?*/????????final???double???????MY_PI =3.14;????????/*pi=3;*/????????double??r=2;????????double??area=MY_PI * r * r;????????System.out.println("面積是:"+area);?????????????}3.數據類型
分類:
3.1 基本數據類型:
1、數值型
1)整型(可以存放整數):
byte(1個字節)
short(2個字節)
int(4個字節) (默認使用)
long(8個字節)
2)浮點型(表示小數):
float(4個字節)
double(8個字節) (默認使用)
2、非數值型
1)字符型—————需要給值加上單引號,只能存一個字符
char(2個字節):本質上是一個整數,是字符的Unicode碼值
2)布爾型————結果只有兩種 true/false
boolean
3.2 引用數據類型:
1)String:可以存儲多個字符使用雙引號引起來
2)數組
3)枚舉
4.運算符
分類:
4.1 賦值運算符:
賦值符號:= 將右邊的值賦給左邊的變量
變量名 =表達式;
表達式舉例:
4.2 算術運算符:
符號:+ - * / % ++ --
++放在變量前指先加1在使用;放在變量后指先使用再加1
--放在變量前指先減1在使用;放在變量后指先使用再減1
%只求余數
num+=2;(意思為num=num+2;)
public?static?void?main(String [] args){???????//++ --???????int?a=4;???????int?b=2;???????int?c=5;???????/*???????System.out.println((a+b));???????System.out.println((a-b));???????System.out.println((a*b));???????System.out.println((a/b));???????System.out.println((a+b));???????System.out.println((a+b));*/???????????????System.out.println(a++);//輸出結果為4???????System.out.println(a);//輸出結果為5???????System.out.println(++a);//輸出結果為6???????System.out.println(c%b);//輸出結果為1???}4.3 關系運算符
運算符含義舉例結果==等于5==6false!=不等于5!=6true>大于5>6false=大于等于5>=6false<=小于等于5<=6true
注意:
= 為賦值運算符,== 等于運算符
表達式返還給我們的結果類型都是boolean 類型
4.4 邏輯運算符:
運算符含義運算規則&&短路與兩個表達式結果都是true結果才是true||短路或只要有一個為true 結果就為true!取反將原來表達式結果取反& |
ABA&&BA||BTTTTTFFTFTFTFFFF
&& 一假必假
|| 一真必真
public?static?void?main(String[] args) {????????// TODO Auto-generated method stub??????int?a=4;??????int?b=2;??????int?c=5;?????????????//a>b為T,b>c為F 所以a>b||b>c為T;ab?? ||??? b>c??? &&??? a4.5 三目(元)運算符(條件運算符):
語法:
boolean表達式? 表達式1:表達式2;
當boolean表達式的結果為true的時候 執行表達式1
當boolean表達式的結果為false的時候 執行表達式2
案例:int?a=5;????int?b=10;????int?c= a>b???0:1;????System.out.println(c);//結果為1?int?a=5;????int?b=10;????String c= a>b???"正確":"錯誤";????System.out.println(c);//結果為錯誤返回值的數據類型需要和執行的表達式的數據類型一致運算符優先級
5.類型轉換
5.1 自動類型轉換
好比生活中有兩個水杯,一個大的一個小的,如果將裝滿水的小杯中水倒入空的大杯,是可以的,類似于這樣的場景在java中稱之為自動類型轉換
案例1:
double?first=81.99;int?duo=2;double??seconde=first+duo;案例2:
問題: 某班第一次Java考試平均分81.29,第二次比第一次多2分,計算第二次考試平均分?
double?firstAvg=81.29;??double?secondAvg;??int?rise=2;secondAvg=firstAvg+rise;???//一個double類型和一個int類型System.out.println(secondAvg);???// 結果是double類型??? 83.29規則:
①在整個表達式中,如果有double數據類型的話,則整個表達式的結果會自動的提升為double類型
②在自動類型轉換的表達式中數據類型需要兼容。如:都是數值型
③目標類型要大于原類型
5.2 強制類型轉換
好比生活中有兩個水杯,一個大的一個小的,如果將裝滿水的大杯中水倒入空的小杯,是可以的但是會溢出,類似于這樣的場景在java中稱之為自強制類型轉換
語法:
數據類型 變量名=(數據類型)(表達式);————是先運算表達式,然后將結果轉換
如:int seconde=(int) (first+duo); 或 int seconde=(int) (first)+duo;————先將first轉換為int類型在計算,最后將結果轉換為int類型
缺點:丟失精度,尤其在財務等方面慎用!!!(double轉int 丟失的是小數點后面的所有值不是四舍五入)
案例1:
double??first=81.99;int??duo=2;int??seconde=(int) (first+duo);//結果是83案例2:
問題:
去年Apple筆記本所占市場份額是20,今年增長的市場份額是9.8,求今年所占份額?
解析:
int before = 20; //apple筆記本市場份額
double rise = 9.8; //增長的份額
編譯出錯的情況:
int now =before + rise; //不能完成自動類型轉換
更改為; int now =before+(int)rise; //強制類型轉換
5.3 boolean類型
使用場景:
當我們遇到 真 或者 家 , 是 或者 否,類似于這樣兩種情況的時候可以使用boolean類型的值
boolean 類型的值:false 和 true
如何使用:
案例問題:從控制臺輸入張三同學的成績,與李四的成績(80分)比較,輸出“張三的成績比李四的成績高嗎?“ 的判斷結果
6.Scanner
引入:之前我們都是在程序中定義變量,但是如果想讓用戶從鍵盤輸入怎么辦呢?就需要使用Scanner
作用:接收用戶在鍵盤輸入的值
使用步驟:
①導包
import java.util.Scanner; / import java.util.*; (java.util是包名 Scanner是類名,
如果用*則表示取java.util包下的所有類,兩種方法都行)
ps:在Eclipse中導包的快捷鍵:Ctrl + Shift + O。初學者不建議導,熟練之后再運用快捷鍵更佳!!!
②創建Scanner 對象
Scanner tx = new Scanner (System.in);
③使用 常用方法
接收int型 int age= tx.nextInt();
接收double型 double score=tx.nextDouble();
接收String類型 String name=tx.next();
注意
第二步中新建的Scanner中用的什么名(tx)第三步中就用什么名
由于工具的原因,在編寫提示語的時候將ln去掉;如將System.out.println("請輸入年齡:");的ln去掉即為System.out.print("請輸入年齡:");
package?cn.kgc.tx.ketang;?//1、導包import?java.util.Scanner;?public?class?Demo4 {?????public?static?void?main(String[] args) {????????// TODO Auto-generated method stub?????????????????//2、創建Scanner? 對象?????Scanner? tx =?new?Scanner (System.in);???????????//3、使用?????System.out.print("請輸入年齡:");?????int?age=tx.nextInt();?????System.out.print("請輸入姓名:");?????String name=tx.next();?????System.out.print("請輸入分數:");?????double?score=tx.nextDouble();?????System.out.print("年齡是:"+age+",姓名是:"+name+",分數是:"+score);????}}7.包的使用
新建的包都使用小寫字母組成,不能有中文或者特殊符號
新建的包使用公司域名去掉3w其他內容倒寫,如 www.kgc.cn cn.kgc.公司定義
新建的每個類我們使用的每個單詞的首字母大寫
在每個類中都會有且只有一個 package+包的名字(且在代碼的第一行)
三、程序選擇結構
3.1基本選擇結構
語法:
if(不同類型的條件){
? 如果條件為真,則執行
}
條件為假的時候執行大括號后面的內容
if () { // 括號里必須是布爾條件表達式
//代碼塊,只有一條語句的時候大括號可以省略,但是不建議那么做
}
流程圖
案例:
如果張浩的Java考試成績大于98分,張浩就能獲得一個MP4作為獎勵//解析:題目中有 如果 ....就.... 其實是對應我們英文中的單詞就可以使用 if 選擇結構完成
public?static?void?main(String[] args){???????//? 如果??? 。。。java>98???????//就有獎勵????????double???javaScore=100;?????????????????if(javaScore? >98){????????????//條件為真則執行這里再向下執行????????????System.out.println("有一個硬盤獎勵");????????}???????//條件結果為假的話,直接跳到這里執行????????System.out.println("程序結束");???}3.2復雜程序結構
主要是和我們的各種運算符相互結合使用
如:張浩的Java成績大于98分,而且音樂成績大于80分,老師會獎勵他;或者Java成績等于100分,音樂成績大于70分,老師也會獎勵他
public?static?void?main(String[] args) {????????// TODO Auto-generated method stub????Scanner tx=new?Scanner(System.in);????System.out.print("張浩的Java成績是:");????int?javaScore=tx.nextInt();????System.out.print("張浩的音樂成績是:");????int?musicScore=tx.nextInt();????if((javaScore>98&&musicScore>80)||(javaScore==100&&musicScore>70)){????????System.out.println("獎勵張浩一個MP5");????}?????????System.out.println("程序結束");}if-else為什么使用if-else ?使用傳統的if選擇結構也可能完成如果否則之類的問題,但是可能造成代碼的冗余,浪費時間。
案例1:
如果張浩Java考試成績大于98分,老師就獎勵他一個MP4,否則老師就罰他進行編碼
解析:我們可以使用兩個 if 選擇結構。如:
if?(score >?98) {??System.out.println("老師說:不錯,獎勵一個MP4!");}??if?(score <=?98) {?System.out.println("老師說:懲罰進行編碼!");}但是這樣容易出現一個問題(可以打斷點執行看):
程序都是從上至下執行的,如果第一個條件不滿足執行后面的程序沒問題,但是如果第一個條件已經成立,后面的不需要執行,但是這種兩個if條件寫的程序,第一個條件不管是否成立都會執行
就影響性能
如何解決呢?請看后續腦圖...
案例2:
if(zhangScore>98){???????System.out.println("獎勵一個MP4");????}???//使用之前的基本選擇結構可以做,但是可能會造成代碼的冗余???//執行的效率就降低了???if(zhangScore<60){???????System.out.println("俯臥撐30個");???}所以我們使用 if-else
語法:
if(){????//布爾類型的表達式??//條件為真進入執行代碼塊1?}else{??//條件為假進入代碼塊2}流程圖:
案例:
if(zhangScore>98){????????????//如果張浩成績大于98有獎勵????????System.out.println("獎勵一個MP4");???}else?{??//否則俯臥撐30個???????System.out.println("俯臥撐30個");???????}多種if選擇結構
為什么使用多種if
在我們的之前學習過程中,都是判斷兩種情況,不是怎么樣就是怎么樣。在實際生活中是可能出現區間選擇的,如:分數的評級
成績>=80 :良好 成績>=60 :中等成績<60 :差
類似這樣,單個的if無法完成,多個if又比較麻煩,那就可以使用我們即將學習的多重 if
語法:
if(){}else??if(){}else??if(){}else{?}流程圖:
案例:
//對學員的結業考試成績評測 成績>=80 :良好?? 成績>=60 :中等 成績<60?? :差????public?static?void?main(String[] args) {????????// TODO Auto-generated method stub??????Scanner tx=new?Scanner(System.in);??????System.out.print("請輸入考試成績:");??????int?score=tx.nextInt();??????if(score>=80){??????????System.out.println("良好");??????}else?if(score>=60){??????????System.out.println("中等");??????}else?{??????????System.out.println("差");??????}????????}在我們執行的程序過程中,程序是自上而下執行的,所以條件判斷的時候,會在第一個判斷條件滿足的時候停下并執行,后面的內容就不會再執行了
所以,在條件判斷的時候,條件的語句順序不能隨便的寫,要按照一定的順序
嵌套if選擇結構
案例引入:
男:今晚我們去看電影吧?
女:好啊,不過晚于6點還有其他事就不去了
分析:女是答應去的,但是有前提條件就是不能遲于6點鐘
這里就相當于有兩個if條件,第一個條件滿足才會執行后面的內容
語法:
if(條件1){??if(條件2){???// 代碼塊1 當兩個if都滿足時才運行??}else{????//代碼塊2??}}else{??//代碼塊3}流程圖:
案例:
問題:學校舉行運動會,百米賽跑跑入10秒內的學生有資格進決賽,根據性別分別進入男子組和女子組
分析:如果進入決賽 再看是男還是女,如果是男進入男子組女就進入女子組。這就使用到了嵌套if選擇結構
1
@Test
?public?void?demo8(){??????System.out.print("請輸入你的跑步成績:");??????//輸入成績??????double?score=tx.nextDouble();??????//對成績進行判斷??????if(score<=10){??????????//如果成績合格再判斷性別??????????System.out.print("請輸入你的性別:");??????????String sex=tx.next();??????????//判斷性別??????????if(sex.equals("男")){??????????????System.out.println("恭喜進入男子組決賽");?????????????}else?if(sex.equals("女")){??????????????System.out.println("恭喜進入女子組決賽");??????}????else?{??????????????System.out.println("輸入錯誤");??????}??}else{??????System.out.println("很遺憾你沒有進入決賽");??}???????}案例2
1.輸入小明的考試成績,顯示所獲獎勵。成績==100分,爸爸給他買輛車
100分>成績>=90分,媽媽給他買MP4 ;?90分>成績>=60分,媽媽給他買本參考書 ;成績<60分,什么都不買?Scanner input =?new?Scanner(System.in);?int?score = input.nextInt();?// 接收成績?if?(score ==?100) {???System.out.println("他爸爸給他買輛車");?}?else?if?(score >=?90) {???System.out.println("他媽媽給他買MP4");?}?else?if?(score =?60) {???System.out.println("他媽媽給他買本參考書");?}?else?{???System.out.println("什么都不買");?}??2.
Scanner input =?new?Scanner(System.in);?????System.out.println("請輸入是否是會員:是(y)/否(其他字符)");?????String identity = input.next();?????System.out.println("請輸入購物金額:");?????double?money = input.nextDouble();?????if(identity.equals("y")){?//會員???????if(money>200){??????????money = money *?0.75;???????}else{??????????money = money *?0.8;???????}?????}else{?//非會員???????if(money>100){??????????money = money *?0.9;???????}?????}?????System.out.println("實際支付:"?+ money);3.
/* 輸入會員積分 */?????System.out.print("請輸入會員積分: ");?????Scanner input =?new?Scanner(System.in);?????int?custScore = input.nextInt();?????double?discount;???????/* 判斷折扣 */?????if?(custScoreswitch選擇結構
語法:
switch(表達式){?????//表達式為 int、short、byte、char、枚舉、String類型????case常量1:???//計算表達式的值????語句;????????//如果等于常量1????break;????case常量2:????語句;???????//如果等于常量2????break;???……????default:????語句;???????????//如果沒有找到匹配的值????break;????}注意:
switch后面只能跟6種類型
3種整數型:byte、short、int
兩個字符相關:char、String
一個枚舉型
字符串需要在jdk7.0之后才能使用
案例1:
韓嫣參加計算機編程大賽: 如果獲得第一名,將參加麻省理工大學組織的1個月夏令營;如果獲得第二名,將獎勵惠普筆記本電腦一部;如果獲得第三名,將獎勵移動硬盤一個;否則,不給任何獎勵
???@Test??????public?void?demo3(){??????????int?mc=2;??????????if(mc==1){??????????????System.out.println("夏令營");??????????}else?if(mc==2){??????????????System.out.println("電腦");??????????}else?if(mc==3){??????????????System.out.println("硬盤一個");??????????}else{??????????????System.out.println("明年繼續努力");??????????}??????????System.out.println("程序結束");??????}以上是使用多重if選擇結構的完成,但是從代碼的結構上看,顯得代碼冗余,結構復雜,有多次的等值判斷。
為了解決上述問題,我們引出switch的選擇結構
/**????* 1.常量名不可重復????* 2.每一個case后面要有break結束語????* 3.default可以在任何位置,除了在最后break可以省略在其他位置都不可省略(題意要求的除外)????*?? 建議都放在最后????* 4.switch后面的表達式類型只能是int byte short char? 枚舉? 和jdk1.7以后的String????* 5.case后面的常量不是一定要連續的????* 6.表達式是哪個就會跳轉到相對于的case語句????*/???int?mingCi=2;???switch(mingCi){???case?1:????System.out.println("參加夏令營活動");????break;???case?2:????System.out.println("獎勵筆記本一部");????break;???case?3:????System.out.println("獎勵移動硬盤一個");????break;????default:?????System.out.println("沒有獎勵");????break;???}???System.out.println("程序結束");if選擇結構和switch選擇結構的使用場景
if選擇結構我們一般都是使用在區間判斷上,而switch選擇結構一般是作用在等值判斷
案例2:
@Test????public?void?demo9(){????????System.out.print("輸入1到7選擇周一到周日大禮包:");????????String num=tx.next();????????switch(num){????????case?"1":????????????System.out.println("早上8點起床寫代碼");????????break;????????case?"2":????????????System.out.println("早上9點起床寫代碼");????????break;????????case?"3":????????????System.out.println("早上8半點起床寫代碼");????????break;????????case?"4":????????????System.out.println("早上7點半起床寫代碼");????????break;????????case?"5":????????????System.out.println("早上7點起床寫代碼");????????break;????????case?"6":????????????System.out.println("寫代碼寫到晚上12點");????????break;????????case?"7":????????????System.out.println("早上8點起床寫代碼");????????break;?????????default:????????????System.out.println("別想逃,輸別的沒有用的");????????break;????????}switch常見錯誤
1
常見錯誤1:
常見錯誤2:
常見錯誤3:1
比較switch和多重if選擇結構
相同點
都是用來處理多分支條件的結構
不同點
if多用于區間的判斷
switch用于等值條件的判斷
用switch能做的,用if都能做,但反過來則不行
選擇結構的總結
到目前為止我們學習過五種選擇結構:
基本if選擇結構: 處理單一或者組合條件的情況
if-else選擇結構:處理簡單的條件分支情況
多重if選擇結構:處理復雜的條件分支情況
嵌套if選擇結構:用于較為復雜的流程控制
switch:選擇結構:多重分支并且條件判斷是等值判斷的情況。
如何處理系統異常
使用hasNextInt()解決問題2
Scanner input =?new?Scanner(System.in);???????//如果輸入的是數字????if?(input.hasNextInt()) {????????int?num = input.nextInt();????????switch?(num) {????????case?1:????????????//顯示系統主菜單;?????????????break;????????case?2:????????????System.out.println("謝謝您的使用!");??break;????????default:????????????System.out.println("輸入錯誤。");break;????????}????}?else?{?????//如果輸入的不是數字????????System.out.println("請輸入正確的數字!");????}四、循環結構(重點)
為什么使用循環:
在達到同樣的效果的同時可以用較簡潔的代碼
public?void?demo1(){????????//直接打印:易錯、代碼量多、效率低????????System.out.println("好好學習第一遍");????????System.out.println("好好學習第二遍");????????System.out.println("好好學習第三遍");?????????????System.out.println("好好學習第四遍");????}使用循環即可解決
概念:
一直重復做的有開始有結束的事
循環的特征:
循環條件:開始結束的條件
循環操作:一直需要重復做的事
循環變量:能夠對循環條件的結果產生影響的量
4.1 while循環
特點:
先判斷,后執行
如果循環條件開始就不符合的時候,循環操作一遍也不會執行
語法:
while(循環條件//boolean類型表達式){??循環操作}流程圖:
案例1:
/*打印50份試卷?????* 循環特征:?????*??????????? 循環條件:開始結束的條件?????*??????????? 循環操作:一直需要重復做的事?????*??????????? 循環變量:能夠對循環條件的結果產生影響的量?????*/????@Test????public?void?demo3(){????????int?a=1;????????while?(a<=50){?????//循環條件????????????//循環操作????????????System.out.println("打印第"+a+"份試卷");????????????a++;???//循環變量????????}????}案例2(while循環進階):
分析:明確是否能用循環做?若能,明確循環結構需要的量。String類型的比較用equals()
?@Test Scanner sc =?new?Scanner(System.in);???System.out.println("老師我合格了么(y/n): ");???String answer=sc.next();???while(answer.equals("n")){???? System.out.println("上午閱讀教材,下午上機操作");???? System.out.println("老師我合格了么?(y/n): ");???? answer=sc.next();???}???System.out.println("程序結束");4.2 do—while循環
為什么需要使用do—while循環?
在生活中往往會有一些事情是需要我們先做然后再去判斷的。如:期末考試之前需要先學習一個學期
語法:
do{??循環操作}while(循環條件);//循環條件時boolean類型流程圖:
執行特點:
先執行,后判斷。
條件為假,也至少執行一次循環操作
案例:
經過幾天的學習,老師給張浩一道測試題,
讓他先上機編寫程序完成,
然后老師檢查是否合格。如果不合格,則繼續編寫。……
@Testpublic?void?demo1(){????????String answer;????????do?{????????????//循環操作????????????System.out.println("先上機考試");????????????System.out.println("老師我合格了嗎?");????????????answer=tx.next();????????}while?("n".equals(answer));????????System.out.println("程序結束");????????????} while?和do...while的區別:不同點:語法不同;執行次序不同;初始情況不滿足條件時;while循環一次都不執行;do-while循環不管任何情況都會執行一次。4.3 for循環(難點)
為什么使用for循環:
有很多問題用我們之前的whie循環是可以的,也可以使用我們現在for循環,類似于運動員有的擅長跑,有的擅長短跑,但是都是長跑的。我們的循環也是一樣,只是他們都有自己擅長的領域。對比for循環的結構和while循環的結構,其實結構都是一樣
的只是每個部分所在的位置有所不同,之前所在的是多行的內容現在放到一個括號里面了。
代碼更簡潔:while循環中有的表達式在for中都有
適用場景:循環次數固定的情況下使用
語法:
for(初始化循環變量;循環條件;修改循環變量的值){??循環操作}易錯點:
初識化循環變量可以省略但是需要在for上面寫
循環條件和修改循環變量的值不能省略否則會死循環
初始化循環變量、循環條件、修改循環變量的值都不寫的話(分號不能省)會死循環
案例:
商場對顧客的年齡層次進行調查
計算各年齡層次的顧客比例
@Test????public?void?demo6(){????????double?num2=0;?//聲明30歲以下人員數????????double?num3=0;?//聲明30歲以上人員數????????for?(int?i=1;i<=10;i++){????????????System.out.print("請輸入第"+i+"位顧客的年齡:");????????????int?num1=tx.nextInt();????????????if?(num1<=30){?????????????????num2++;????????????}else?{?????????????????num3++;????????????}??????????????}????????System.out.println("30歲以下的比列是:"+(num2/(num2+num3)));????????System.out.println("30歲以上的比列是:"+(num3/(num2+num3)));????}4.4 break和continue的不解之緣
含義:
break:終止本循環,繼續向后執行
continue:終止本次循環,繼而執行下一次的循環操作
break作用:
改變程序控制流
用于do-while、while、for中時,可跳出循環而執行循環后面的語句
break通常在循環中與條件語句一起使用
continue作用:
中斷此次循環,繼續下次循環
continue通常與條件語句一起使用加速循環
案例:
break:
循環錄入某學生5門課的成績并計算平均分。如果某分數錄入為負,停止錄入并提示錄入錯誤
循環錄入成績,判斷錄入正確性。錄入錯誤,使用break語句立刻跳出循環;否則,累加求和
@Test????public?void?demo7(){????????int?sum=0;????//成績總和????????boolean?flag=false;???// false 表示輸入的分數不是負數?????? true表示輸入的分數是負數????????for?(int?i=0;i<5;i++){????????????System.out.print("請輸入第"+(i+1)+"門課的成績:");????????????//循環錄入的成績????????????int?score=tx.nextInt();????????????if?(score<0){????????????????flag =true;????????????????break;????????????}????????????sum=sum+score;????????}????????if(flag){????????????System.out.println("輸入錯誤");????????????}else?{????????????int?avg= sum/5;????????????System.out.println("平均分為:"+avg);?????????????????????????}??????}continue:
@Test????/*?????* 循環錄入Java課的學生成績,統計分數大于等于80分的學生比例?????*/????public?void?demo9(){????????int?sum=0;??//用來累加學生人數的變量????????System.out.print("班級總人數為:");????????int?penNo=tx.nextInt();????????for?(int?i=1;i<=penNo;i++){????????????System.out.print("輸入第"+i+"位學生的成績:");????????????double?score=tx.nextDouble();????????????if?(score<80){????????????????continue;????????????}????????????sum++;????????}????????double?a=(double)sum/penNo*100;????????System.out.println("80分以上的學生個數為:"+sum);????????System.out.println("80分以上學生占比為:"+a+"%");????}對比break和continue:
使用場合:
break常用于switch結構和循環結構中
continue一般用于循環結構中
作用(循環結構中):
break語句終止某個循環,程序跳轉到循環塊外的下一條語句
continue跳出本次循環,進入下一次循環
Ps:補充:return 結束當前方法的執行并退出,返回到調用該方法的語句處。
4.5 調試
為什么需要調試 : 在程序的開發過程中難免會有錯誤,但是我們不好發現和定位錯誤,所以我們需要調試
怎么調試,程序的執行一閃而過我們想讓其慢點,就可以使用斷電。步驟為:
1.分析錯誤,設置斷點
2.啟動調試: debug as
3.單步運行: F6
4.觀察變量.
5.發現問題,解決問題
篇幅限制,剩下的內容再下一篇,已出,查看主頁,去看吧!記得去看奧!
總結
以上是生活随笔為你收集整理的c 结构体在声明时赋值_Java基础知识 初识Java 循环结构进阶 数组 数据类型 各种运算符...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 优酷ts转换mp4_如何方便快捷无损地下
- 下一篇: oledb 访问接口sqlncli10返