java语言提供结构_java学习之语句结构
在java語言當中存在4中語句結(jié)構(gòu),分別是:
1、順序結(jié)構(gòu)
2、判斷結(jié)構(gòu)
3、選擇結(jié)構(gòu)
4、循環(huán)結(jié)構(gòu)
一、順序結(jié)構(gòu):
所謂的順序結(jié)構(gòu),也就是當不指定其他三種語句結(jié)構(gòu)的情況下,語句是從上往下依次執(zhí)行的,只有碰到其他三種語句結(jié)構(gòu)的時候,才會做相應(yīng)判斷、選擇、循環(huán)。順序結(jié)構(gòu)是基礎(chǔ),是默認的執(zhí)行順序。
在順序結(jié)構(gòu)當中有一種比較特殊的形式就是:
int a = 9;
{
int x = 10;
System.out.println("Hello World!");
}
System.out.println("x == "+x);//這個時候打印x是打印不出來的
這種語句結(jié)構(gòu)在java語言當中叫做局部代碼塊。局部代碼塊的特點就是在其中聲明的變量,在其所屬的大括號結(jié)束之后,就會被內(nèi)存釋放。當我們需要一個變量僅在我們用完之后立即釋放的時候,我們可以選擇用這種結(jié)構(gòu)表達式。一般用于節(jié)約內(nèi)存的使用,國外的大多數(shù)程序開發(fā)者都比較注重這一點。
二、判斷結(jié)構(gòu):
判斷結(jié)構(gòu)當中是以if為基礎(chǔ)的,if有三種具體形式:
1、單if結(jié)構(gòu),表達方式:
if(條件表達式,必須返回true 或者 是false){
需要執(zhí)行的語句
}
if之后的大括號,是表示該if語句控制的語句范圍。當if之后有且僅有一條語句時,這個時候大括號是可以省略的。
比如:
int a = 10;
if(a>1)
System.out.println("A 大于 1");
//當if后緊跟著一條語句時這個時候 大括號"{ }"是可以省略掉的。
這里的單if語句的意思就是說,當滿足判斷條件的時候,if控制體內(nèi)的語句將被執(zhí)行,否則被程序忽略不執(zhí)行。一種判斷,一種結(jié)果。
2、if....else....表達方式:
if(條件表達式,同樣必須返回true或者是false)
{
需要執(zhí)行的語句1;
}else{
需要執(zhí)行的語句2;
}
這種if表現(xiàn)形式的語句是說,當判斷條件滿足的時候,執(zhí)行語句1,當條件不滿足的時候?qū)?zhí)行語句2;此時表現(xiàn)的是一個判斷,一個結(jié)果。但是無論怎樣,都有且只有一條語句會被執(zhí)行。
3、if...else if... ... else ...表達方式:
if(判斷表達式1){
語句1;
}else if(判斷表達式2){
語句二;
}else if(判斷表達式3){
語句三;
}else if(判斷表示式4){
....
}else{
語句其他;
}
這種if的表現(xiàn)形式是說,當判斷表達式1對的時候,執(zhí)行語句1,當判斷表達式2對的時候,執(zhí)行語句2....當都不滿足時執(zhí)行最后一個else內(nèi)的語句其他;即:多種判斷,一種結(jié)果。
三、選擇結(jié)構(gòu):
在java選擇結(jié)構(gòu)中只有一個switch選擇結(jié)構(gòu),他的作用主要用于:當一個變量有多種值的時候,提供給我們一個選擇執(zhí)行的語句,進行操作。代碼示例:int a;
class SwichDemo {
public static void main(String[] args) {
int a = 1;
switch(a){
case 1:
System.out.println("A's value is :" + a);
break;
case 2:
System.out.println("A's value is :" + a);
break;
default:
System.out.println("No match value");
}
}
}
這里需要注意的一點就是break語句,break語句的作用是當條件滿足的時候,執(zhí)行完相對應(yīng)的語句之后,退出switch語句。假如此時不用break退出的話,那么程序會在執(zhí)行完對應(yīng)的語句之后繼續(xù)把其他的語句打印一遍,直到遇到break跳出switch語句。讓我們修改一下 上述的例子看下 :
class SwichDemo{
public static void main(String[] args) {
int a = 1;
switch(a){
case 1:
System.out.println("A's value is :" + a);
//break;
case 2:
System.out.println("A's value is :" + 2);
//break;
case 3:
System.out.println("A's value is :" + 3);
break;
default:
System.out.println("No match value");
}
}
}
那么此時程序?qū)敵?#xff1a;
,直到遇到break語句之后才會退出swtich,否則一直向下執(zhí)行,直至遇到“}”switch大括號,控制范圍表示符為止。
這里需要注意的一點是 case 語句之后只能跟int,short,byte,char類型的常量,在java后續(xù)更新版本當中,有的支持String.
小結(jié)之if 和 switch的區(qū)別:
1、結(jié)構(gòu)的書寫格式不一樣。
2、當處理單一變量,多種選擇的時候,這兩者是都可以的,都能夠完滿的完成任務(wù)。但是,swicth此時會比較清晰的呈現(xiàn),待判斷的變量,還有帶選擇的選項之間的關(guān)系,但是也有一個弱點就是,書寫起來要非常謹慎,因為switch書寫起來要比if復(fù)雜并且容易出錯。
3、switch要比if有局限性。用switch能完成的if都可以完成,用if能完成的switch不一定可以。
(待續(xù))
四、循環(huán)結(jié)構(gòu):
循環(huán)結(jié)構(gòu),是為了方便我們重復(fù)處理大量語句而存在的。
循環(huán)語句有三種:while循環(huán)、do...while循環(huán)、for循環(huán):
while循環(huán):while循環(huán)的特點是,先判斷條件真假,如果為假,那么不執(zhí)行循環(huán)體當中的語句;如果為真,就執(zhí)行循環(huán)體內(nèi)的語句。while循環(huán)可以執(zhí)行,也可以一次不執(zhí)行。
代碼示例:
int a = 10;
while(a>8)//概括號內(nèi)必須返回boolen值
{
System.out.println("a is "+a);
a--;//一般情況下需要做條件判斷的調(diào)整,讓循環(huán)停止下來。否則即為死循環(huán)。
}
do...while循環(huán):
do...while循環(huán)的特點是,先執(zhí)行一次,然后判斷條件是否滿足,如果滿足,繼續(xù)執(zhí)行,如果不滿足則退出循環(huán)。但是無論如何,循環(huán)體內(nèi)的語句,至少執(zhí)行一次。
代碼示例:
int a = 10;
do{
System.out.println("Do while 循環(huán)");
}while(a>11);
小結(jié):那么什么時候使用while循環(huán),什么時候使用do...while循環(huán)呢?(暫時沒有搞明白....待續(xù))。
for循環(huán)語句:
for(初始條件表達式;驗證條件表達式;循環(huán)次數(shù)控制表達式){}//循環(huán)體
代碼示例:
for(int i = 0 ; i<=10; i++){
System.out.println("Hello World!");
}
這里需要注意的是for循環(huán)的具體執(zhí)行順序:
①首先初始化變量i,(注意這里初始化完i之后就不再用它了)
②然后判斷(i<=10)的真假,如果為真則
③System.out.println("Hello ?World!");
④執(zhí)行完這個語句之后然后執(zhí)行 i++;
⑤之后又開始計算 i<=10 的真假,如果為真
⑥System.out.println("Hello ?World!");
⑦然后執(zhí)行i++;
⑧當再循環(huán)后 i<=10 為假之后,退出循環(huán)體
總體的步驟也就是:初始化條件表達式,這個只初始化一次。之后的工作就集中在判斷條件是否滿足,如果滿足就執(zhí)行循環(huán)體,變量增加;只有當條件不滿足的時候,退出循環(huán)體。
for循環(huán)還有一個特點就是,內(nèi)部初始化的變量屬于局部作用域,局部作用域的意思是當退出循環(huán)體的時候,釋放該變量所占的內(nèi)存空間。在另一方面也就節(jié)省了內(nèi)存的開銷。
五、循環(huán)結(jié)構(gòu)的應(yīng)用場景:
1、累加思想:
現(xiàn)在有一個需求就是計算1....100這個數(shù)的和;
代碼:
int i = 1;
int sum;
while(i<=100){
sum += i;
i++;
}
累加器的思想:(待續(xù))
2、計數(shù)器思想:
現(xiàn)在有一個需求就是,打印出1...100中6的倍數(shù),以及倍數(shù)的個數(shù):
代碼:
int i = 1;
int count;
while(i<=100)
{
if(i%6 == 0){
System.out.println(i);
count++;
}
}
System.out.println("1到100當中共有6的倍數(shù)"+count+"個");
3、無限循環(huán):
while無限循環(huán):while(true);
for 無限循環(huán):for(;;);(需要說明的一點就是,for 初始化表達式默認就是真);
(未完待續(xù)....)
FOR循環(huán)練習:(大圈套小圈的思想:當程序重復(fù)做一件事,然而這件重復(fù)要做的事內(nèi)又存在需要重復(fù)做的事時,即這個時候就是大圈套小圈的思想。)
For 聯(lián)系一、
需求:在控制臺以"*"為單位打印如下字符:
******
******
******
******
思路:
1、首先要打印4個行,用for循環(huán)實現(xiàn)如下:
for(int i = 0; i<4;i++){
//這里用于打印四個行
}
2、在一個行內(nèi)又得重復(fù)打印6個"*",用for循環(huán)實現(xiàn)代碼如下:
for(int x = 0; x<6;x++){
//這里用于打印6個"*";
}
3、綜合起來講的話,也就是每打印一個行,都要在這個行內(nèi)重復(fù)打印"*"6次,綜合起來就是:
for(int i = 0; i<4;i++){
for(int x = 0; x < 6; x ++){
System.out.print("*");
}
}
4、在每行打印完之后,需要在行尾添加一個換行符:
for(int i = 0; i < 4; i++){
for(int x = 0; x < 6; x++){
System.out.print("*");
}
System.out.println();
}
完成。
For 聯(lián)系二:
需求:
在控制臺以"*"為單位打印如下字符圖形:
*******
******
*****
****
***
**
*
思路:
1、這個打印總共有七行,所以肯定要有一個:
for(int i = 0 ; i<7 ; i++)
{
}
2、打印七行之后,我們再來看下每行的特點。這里每行的特點就是,每行輸出的*是由7個逐個往下遞減,也就是第一個輸出是7個,第二個6個,第三個5個,逐個類推.....此時我們可以定義一個變量b來控制*號出現(xiàn)的次數(shù)。
int b = 7;
for(int x = 0; x
System.out.print("*");
}
b--;
3、因為這個需要循環(huán)執(zhí)行,所以需要有一個循環(huán)體包裹著才可以。那我們把第二步的循環(huán)體,放到第一步當中,看一下執(zhí)行結(jié)果:
for(int i = 0 ; i<7 ; i++)
{
int b = 7;
for(int x = 0; x
System.out.print("*");
}
b--;
}
結(jié)果如下:
,很不幸啊,結(jié)果是錯誤的!!!到底是什么地方錯了呢?讓我們仔細閱讀下程序代碼:
首先初始化變量,i=0; 之后比較i是否小于7,如果條件為真,那么執(zhí)行循環(huán)體內(nèi)的內(nèi)容:
現(xiàn)在讓我們來修正下程序:代碼如下:
class ForDemo{
public static void main(String[] args) {
int b = 7;
for(int i = 0; i<7 ; i++){
for(int x = 0; x< b; x++){
System.out.print("*");
}
System.out.println();
b--;
}
}
}
當然這里還有一種寫法,代碼:
class ForDemo{
public static void main(String[] args) {
for(int i = 7; i>0 ; i--){
//int b = 7;
for(int x = 0; x< i; x++){
System.out.print("*");
}
System.out.println();
//b--;
}
}
}
溫馨提示:在你寫任何代碼,將要運行的時候,花10秒時間去認真讀一下,代碼的執(zhí)行順序,看看他是否真的像你預(yù)想的那樣執(zhí)行的。實在不確定再去運行他.....
總結(jié)
以上是生活随笔為你收集整理的java语言提供结构_java学习之语句结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql to double_MySQ
- 下一篇: mysql.data webconfig