java 03_Java基礎03—流程控制

流程控制

參考資料:《Java從入門到精通》/明日科技編著. 4版. 北京:清華大學出版社,2016

一、復合語句

Java的復合語句由“{”開始,“}”結束,又稱為塊語句。

復合語句都是由上至下被執行;

復合語句中可以嵌套復合語句。

public class Compound {

public static void main(String[] args) {

int x = 20;

{

int y = 35;

System.out.println(y);

{

boolean c = true;

System.out.println(c);

}

}

String string = "hello";

System.out.println(string);

//System.out.println(y); //錯誤代碼,在作用域之外使用變量y

}

}

復合語句為局部變量創造了一個作用域,在作用域中定義的變量只能在作用域中被使用。如果在某個變量的作用域之外使用該變量,則會發生錯誤。

二、條件語句

1、if條件語句

if條件語句是一個重要的編程語句,用于告訴程序在某個條件成立的情況下執行某段語句,而在另一個情況下執行另外的語句。if條件語句分為三種,如下所示:

(1)簡單的if條件語句

if(布爾表達式){

語句序列

}

布爾表達式:必要參數,表達式必須返回一個boolean值。

語句序列:非必要參數,可以是一條或者多條,甚至0條都可以。當布爾表達式的值為true時,執行這些語句。

public class Getif {

public static void main(String[] args) {

int a = 10;

if(a == 10){

System.out.println(a);

}

}

}

注意:當語句序列只有一條時,可以省略“{}”。

int a = 10;

if(a == 10)

System.out.println(a);

(2)if...else語句

if(布爾表達式){

語句序列1

}

else{

語句序列2

}

if后面的布爾表達式的值為true,則執行語句序列1;

if后面的布爾表達式的值為false,則執行語句序列2。

public class Getif {

public static void main(String[] args) {

int a = 80;

if(a > 60){

System.out.println("Pass");

}

else {

System.out.println("Fail");

}

}

}

(3)if...else if多分支語句

if(布爾表達式1){

語句序列1

}

else if(布爾表達式2){

語句序列2

}

...

else if(布爾表達式n){

語句序列n

}

else{

語句序列n+1

}

可以對多種情況進行處理,甚至任意種情況。

只執行其中表達式為true的語句,其他語句不執行。

所有表達式都為false,則輸出else后面的語句。

public class GetSource {

public static void main(String[] args) {

int a = 55;

if(a > 90){

System.out.println("優秀");

}

else if(a > 80){

System.out.println("良好");

}

else if(a > 70){

System.out.println("中等");

}

else if(a > 60){

System.out.println("及格");

}

else {

System.out.println("不及格"); //輸出不及格

}

}

}

2、switch多分支語句

在java語言中,可以使用switch語句將所有情況組織起來,以一個簡單明了的方式來實現“多選一”的選擇。

swicth(表達式){

case 常量1 :

語句塊1

break;

case 常量2 :

語句塊2

break;

...

case 常量n :

語句塊n

break;

defaults:

語句塊n+1

break;

}

其中,表達式必須是整型、字符型或字符串類型。對應的,常量也必須是整型、字符型或字符串類型。

如果表達式的值和某個case后面的常量值相同,則執行該case語句后面的若干語句,直到遇到break語句為止。

如果表達式沒有匹配到常量,則執行defaults后面的語句。

可以沒有defaults,沒有匹配到的話,switch則不作處理。

public class Demo1 {

public static void main(String[] args) {

String a = "hello";

switch (a){

case "hello1" :

System.out.println("hi");

break;

case "nihao" :

System.out.println("nihao");

break;

case "hello" :

System.out.println("yes,you are right");

break;

default:

System.out.println("sorry");

break;

}

}

}

注意:

在同一個switch語句,case的常量值必須互不相同。

case語句后面的常量表達式的值可以為整數,但絕不可為實數。例如,下面的代碼不合法的:

case 2.1 //代碼錯誤

三、循環語句

循環語句就是在滿足一定的條件下,反復執行某一個操作。在Java中提供了三種常用的循環語句,分別是while循環語句、do...while循環語句和for循環語句。

1、while循環語句

while語句也稱條件判斷語句,它的循環方式為利用一個條件來控制是否要繼續執行這個語句。

while(表達式){

執行語句

}

當表達式的返回值為true時,執行{}中的語句;

執行完{}中的語句后,重新判斷表達式的返回值;

當表達式的返回值為false時,退出循環。

public class Demo2 {

public static void main(String[] args) {

int x = 1;

int sum = 0;

while (x <= 10){

sum = sum + x;

x++;

}

System.out.println(sum);

}

}

2、do...while循環

while循環先判表達式是否成立,然后執行循環體,而do...while循環先執行一次循環后,再判斷表達式是否成立。也就是說do...while循環的循環體語句至少被執行一次。

do{

執行語句

}

while(表達式); //這里有個分號,千萬別忘了

do...while循環和while循環還有一個明顯的差別,就是do...while循環在結尾多了一個分號。

public class Gess {

public static void main(String[] args) {

int a = 10;

do {

System.out.println("hello world");

a--;

} while(a > 6); //輸出4次hello world

}

}

3、for循環語句

for循環用來重復執行循環體,直到某個條件得到滿足后中止循環。

(1)for循環語句

for(表達式1;表達式2;表達式3){

語句序列

}

表達式1:初始化表達式,負責完成變量的初始化。

表達式2:條件表達式,返回值為boolean型的表達式,指定循環條件。

表達式3:循環的操作表達式,負責修整變量,改變循環條件。

public class Demo2 {

public static void main(String[] args) {

int sum = 0;

for (int i=2;i<=100;i+=2){

sum = sum + i;

System.out.println(sum); //計算2~100之間所有偶數之和

}

}

}

(2)foreach語句

foreach語句是for語句的特殊簡化版,不能完全取代for語句,但是任何foreach語句都能改寫成佛如語句版本。foreach不是一個關鍵字。

for(元素變量x : 遍歷對象obj){

引用了x變量的Java語句;

}

foreach語句中的元素變量x,不必對其進行初化。

public class Demo2 {

public static void main(String[] args) {

int arr[] = {2,4,6};

for(int x : arr){ //遍歷數組

System.out.println(x);

}

}

}

四、循環控制

循環控制包含兩個方面的內容,一方面是控制循環變量的變化方式,另一方面是控制循環的跳轉。控制循環的跳轉需要用到break和continue兩個關鍵詞,break是中斷循環,continue是執行下一次循環。

1、break語句

使用break語句可以跳出switch結構,在循環中,同樣可以使用break語句跳出當前循環體,從而中斷當前循環。

public class BreakTest {

public static void main(String[] args) {

for(int i=0;i<=100;i++){

System.out.println(i);

if(i == 10){

System.out.println("循環終止");

break; //中斷循環

}

}

}

}

注意:如果遇到循環嵌套的情況,break只會跳出包含它的最內層循環,也就是說只跳出一層循環。

public class BreakNest {

public static void main(String[] args) {

for(int i=0;i<3;i++){

for(int j=0;j<10;j++){

System.out.println("i=" + i + " j=" + j);

if(j == 4){

break;

}

}

}

}

}

//break語句中斷了內層循環,但是并沒有影響外層循環。

輸出結果:

i=0 j=0

i=0 j=1

i=0 j=2

i=0 j=3

i=0 j=4

i=1 j=0

i=1 j=1

i=1 j=2

i=1 j=3

i=1 j=4

i=2 j=0

i=2 j=1

i=2 j=2

i=2 j=3

i=2 j=4

如果想讓break跳出外層循環,Java提供了“標簽”功能,如下:

標簽名:循環體{

break 標簽名;

}

public class BreakNest {

public static void main(String[] args) {

Loop:for(int i=0;i<3;i++){ //給外層循環添加標簽

for(int j=0;j<10;j++){

System.out.println("i=" + i + " j=" + j);

if(j == 4){

break Loop;

}

}

}

}

}

//用帶有標簽的break跳出外層循環

輸出結果:

i=0 j=0

i=0 j=1

i=0 j=2

i=0 j=3

i=0 j=4 //當j變量的值等于4時,i的值沒有增加,直接結束外層循環。

2、continue語句

continue語句是針對break語句的補充,contiune語句不是立即中止循環體,而是結束本次循環,回到循環的條件判斷語句,重新開始執行循環。

在for循環語句中,循環體中遇到continue語句后,先執行循環的增量部分,然后進行條件判斷。

在while和do...while循環語句中,遇到continue語句則直接回到條件判斷部分。

public class ContinueTest {

public static void main(String[] args) {

for(int i=1;i<=20;i++){

if(i%2 == 0 ){ //判斷i是否為偶數

continue; //先執行i++,然后跳到下一次循環

}

System.out.println(i); //輸出1~20之間的奇數

}

}

}

與break一樣,continue也支持標簽的功能,使得可以指定continue語句跳出指定的循環體。如下所示:

標簽名:循環體{

continue 標簽名;

}

五、課后實踐

1、編寫Java程序,使用for循環打印菱形。

public class Out{

public static void main(String[] args) {

//設置菱形的大小

int size = 5;

//菱形的上半部分

for(int i = 1;i <= size; i++) {

for (int j = 1; j <= size - i; j++) {

System.out.print(" ");

}

for (int k = 1; k <= i * 2 - 1; k++) {

System.out.print("*");

}

System.out.println(); //起換行作用

}

//菱形的下半部分

for(int i = 1; i <= size -1; i++){

for(int j = 1; j <= i; j++){

System.out.print(" ");

}

for(int k=1; k <= 2 * (size -i) -1; k++){

System.out.print("*");

}

System.out.println(); //起換行作用

}

}

}

輸出結果如下所示:

*

***

*****

*******

*********

*******

*****

***

*

注意:

System.out.print()輸出不換行;

System.out.println()輸出自動換行。

for(int x=1; x<=5; x++){

System.out.print("*");

}

輸出結果:

*****

for(int x=1; x<=5; x++){

System.out.println("*"); //自動換行

}

輸出結果:

*

*

*

*

*

2、打印一個空心菱形。

public class out{

public static void main(String[] args) {

//設置菱形的大小

int size = 5;

//菱形的上半部分

for(int i = 1;i <= size; i++) {

for (int j = 1; j <= size - i; j++) {

System.out.print(" ");

}

for (int k = 1; k <= i * 2 - 1; k++) {

//if語句判斷“*”號是否位于開頭或結束,若不是則輸出空格

if(k == 1 || k == i * 2 - 1){

System.out.print("*");

}

else {

System.out.print(" ");

}

}

System.out.println();

}

//菱形的下半部分

for(int i = 1; i <= size -1; i++){

for(int j = 1; j <= i; j++){

System.out.print(" ");

}

for(int k=1; k <= 2 * (size -i) -1; k++){

//if語句判斷“*”號是否位于開頭或結束,若不是則輸出空格

if(k == 1 || k == 2 * (size -i) -1){

System.out.print("*");

}

else {

System.out.print(" ");

}

}

System.out.println();

}

}

}

輸出結果如下:

*

* *

* *

* *

* *

* *

* *

* *

*

標簽:語句,03,Java,int,流程,循環,public,表達式,out

來源: https://www.cnblogs.com/xuliang-daydayup/p/12900880.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395731.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395731.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395731.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

這三種策略可以幫助女性在科技領域蓬勃發展

by Shubhi Asthana通過Shubhi Asthana 這三種策略可以幫助女性在科技領域蓬勃發展 (These 3 strategies can help women thrive in tech) As someone early on in her career, I’ve attended a few tech talks, conferences, and meetups. One thing I noticed is not many w…

手機衛士09_應用程序四種查看_ListView小標題_進程管理

手機衛士09_應用程序四種查看_ListView小標題_進程管理 1.懸浮窗體的功能實現: 1.1.應用程序的卸載: 包安裝器 packageInstall,包卸載packageruninstall intent.setData(Uri.pare(“package:” 應用程序包名)) 卸載完之后記得更新list集合,更新適配器. 但是不確定用戶是否點了…

pandas:根據行間差值進行數據合并

1. 問題描述 在處理用戶上網數據時&#xff0c;用戶的上網行為數據之間存在時間間隔&#xff0c;按照實際情況&#xff0c;若時間間隔小于閾值&#xff08;next_access_time_app&#xff09;&#xff0c;則可把這幾條上網行為合并為一條行為數據&#xff1b;若時間間隔大于閾值…

Flask學習 一 基本結構

-from flask import Flaskfrom flask import Flask,render_template-from flask import request-from flask import make_response-from flask import abort-from flask import redirect-# __name__參數決定程序的根目錄app Flask (__name__)-# app.route (/)-# def hello_wor…

java8的路徑_什么是路徑?

# 什么是路徑&#xff1f;文件系統以某種形式的媒體(通常為一個或多個硬盤驅動器)存儲和組織文件&#xff0c;使得它們可以容易地被檢索。目前使用的大多數文件系統將文件存儲在樹形(或分層)結構中。在樹的頂部是一個(或多個)根節點。在根節點下&#xff0c;有文件和目錄(Micro…

為什么toString方法可以用來區分數組和對象?

首先大家都應該知道在javascript中只有是對象都存在toString方法&#xff0c;將調用該方法的值轉換為字符串返回&#xff0c;如下&#xff1a; var arr [1, 2, 3];console.log(arr.toString()); //1,2,3 但對象的toString方法和其他優點不同&#xff0c;其返回的是類似 [objec…

平安 開源 數據庫 實踐_刻意的實踐-成為開源

平安 開源 數據庫 實踐by Anthony Ng由Anthony Ng 刻意的實踐-成為開源 (Deliberate Practice — Becoming an Open Sourcerer) I recently finished reading Cal Newport’s book, So Good They Can’t Ignore You. It’s a quick read, and it introduced me to the concept…

更新Composer依賴報錯處理Fatal error: Declaration of Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRe...

更新Composer依賴報錯處理 Fatal error: Declaration of Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRepository::search() must be compatible with Composer\Repository\RepositoryInterface::search($query, $mode 0, $type NULL) in C:\Users\Arthur\AppData\Ro…

解析su,su -,sudo的區別

2019獨角獸企業重金招聘Python工程師標準>>> 本人以前一直習慣直接使用root&#xff0c;很少使用su&#xff0c;前幾天才發現su與su -命令是有著本質區別的&#xff01; 大部分Linux發行版的默認賬戶是普通用戶&#xff0c;而更改系統文件或者執行某些命令&#xff…

java 前置通知_spring aop中的前置通知

fixassetServicemyInterceptormyInterceptor2在上面的配置文件中 我配置了兩個interceptor &#xff0c;這兩個interceptor的invoke方法中的邏輯是一樣的。public Object invoke(MethodInvocation invo) throws Throwable {//自己的橫切邏輯log....invo.proceed()}我想請教的問…

Java并發編程藝術讀書筆記

1、多線程在CPU切換過程中&#xff0c;由于需要保存線程之前狀態和加載新線程狀態&#xff0c;成為上下文切換&#xff0c;上下文切換會造成消耗系統內存。所以&#xff0c;可合理控制線程數量。 如何控制&#xff1a; &#xff08;1&#xff09;使用ps -ef|grep appname&#…

您可能不需要翻譯您JavaScript

by Alex Ewerlf由AlexEwerlf 您可能不需要翻譯您JavaScript (You might not need to transpile your JavaScript) Popular guides like YouMightNotNeedJQuery.com and You Don’t Need Lodash/Underscore have challenged common industry practices.諸如YouMightNotNeedJQue…

java maven 操作 收集的一些命令

maven打包&#xff1a; mvn clean package -Dmaven.test.skiptrue 運行jar: java -jar target/spring-boot-scheduler-1.0.0.jar 這種方式關掉控制臺就不可以訪問&#xff0c;現在要后臺運行的方式啟動 nohup java -jar target/spring-boot-scheduler-1.0.0.jar & 清理并…

手機h5 java平臺_H5 手機 App 開發入門:技術篇

1、手機 App 的技術棧手機 App 的技術棧可以分成三類原生 App 技術棧原生技術棧指的是&#xff0c;只能用于特定手機平臺的開發技術。比如&#xff0c;安卓平臺的 Java 技術棧&#xff0c;iOS 平臺的 Object-C 技術棧或 Swift 技術棧。混合 App 技術棧混合技術棧指的是開發混合…

《Java程序設計》學期總結

《Java程序設計》 學期總結 課程設計小組 -迦瓦棧隊 團隊博客 讀書筆記匯總第一周第二周第三周第四周第五周第六周第七周第八周第九周第十周 實驗報告匯總實驗一實驗二實驗三實驗四實驗五 代碼托管鏈接GitOSC 課程收獲與不足 上了一學期的課&#xff0c;收獲當然后很多&#xf…

012-- mysql的分區和分表

分區 分區就是把一個數據表的文件和索引分散存儲在不同的物理文件中。 mysql支持的分區類型包括Range、List、Hash、Key&#xff0c;其中Range比較常用&#xff1a; RANGE分區&#xff1a;基于屬于一個給定連續區間的列值&#xff0c;把多行分配給分區。 LIST分區&#xff1a;類…

中科大計算機專業少實習_為什么很少有計算機科學專業的人?

中科大計算機專業少實習Hong Kong-based technology writer Dan Wang wrote a blog post exploring why so few people get degrees in computer science. And yes — it’s far fewer people than those who study other science and engineering fields.駐香港的技術作家王丹…

java犯的小錯誤_[Java教程]十個JavaScript中易犯的小錯誤,你中了幾槍?

[Java教程]十個JavaScript中易犯的小錯誤&#xff0c;你中了幾槍&#xff1f;0 2015-06-01 12:00:19序言在今天&#xff0c;JavaScript已經成為了網頁編輯的核心。尤其是過去的幾年&#xff0c;互聯網見證了在SPA開發、圖形處理、交互等方面大量JS庫的出現。如果初次打交道&…

Kali滲透測試——利用metasploit攻擊靶機WinXP SP1

搭建滲透測試環境 Kali攻擊機 WinXP SP1 靶機 啟動metasploit 跟windows RPC相關的漏洞 內部提供的漏洞攻擊 靶機winxp sp1網絡配置 查看虛擬機的NAT網段 配置WinXP SP1靶機的IP地址 執行漏洞利用 后漏洞利用&#xff1a;meterpreter> 靶機的信息 進程情況 查看到explorer.e…

創建響應式布局的優秀網格工具集錦《系列五》

在這篇文章中&#xff0c;我們為您呈現了一組優秀的網格工具清單。如果網頁設計和開人員采用了正確的工具集&#xff0c;并基于一個靈活的網格架構&#xff0c;以及能夠把響應圖像應用到到設計之中&#xff0c;那么創建一個具備響應式的網站并不一定是一項艱巨的任務。enjoy! 您…