Java代碼結構簡述

来源:https://www.cnblogs.com/ALMARO-Blog/archive/2022/06/05/16330046.html
-Advertisement-
Play Games

#結構 ##順序結構 JAVA的基本結構就是順序結構,除非特意指明,否則就按照順序,一句一句執行。 順序結構是最簡單的演算法結構 語句與語句之間,框與框之間按照從上到下的順序執行,它是任何演算法都離不開的基本演算法結構 ##選擇結構 if單選擇結構 if雙選擇結構 if多選擇結構 嵌套的if結構 swit ...


結構

順序結構

  • JAVA的基本結構就是順序結構,除非特意指明,否則就按照順序,一句一句執行。
  • 順序結構是最簡單的演算法結構
    順序結構
  • 語句與語句之間,框與框之間按照從上到下的順序執行,它是任何演算法都離不開的基本演算法結構

選擇結構

  • if單選擇結構
  • if雙選擇結構
  • if多選擇結構
  • 嵌套的if結構
  • switch多選擇結構

if選擇結構

if單選擇結構

很多時候需要判斷一個東西是否可行,然後才去執行,這樣一個判斷在程式中用if語句來表示。
語法:
if
結構

  • equals(比較字元):判斷字元串是否相等
    這是舉例說明if單選擇的例圖,就是看是否和輸入的字元串相同
    代碼如下:
import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("請輸入內容:");
        String s = scanner.nextLine();
        if (s.equals("hello")){
            System.out.println(s);
        }
        System.out.println("End");
        scanner.close();
    }
}

示意圖1
例圖2

if雙選擇結構

語法:
語法
結構
假如我要判斷某個人考了多少分,算及格還是不及格,可以寫如下一串代碼:

import java.util.Scanner;

public class IfDemo02 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("請輸入成績:");
        int score = scanner.nextInt();
        if(score>=60){
            System.out.println("及格");
        }else{
            System.out.println("不及格");
        }
        scanner.close();
    }
}

例圖:
例圖
這就是if雙選擇結構,true有一個結果,false也有一個結果。

if多選擇結構

語法:
語法
F=false,T=true
結構
else if在if和else中間承接。
舉例如下,依舊是上一個例子,不過對細節進行了細化。
例圖3
但是分數假如是小數,使用int會報錯,因此改為double或float
例圖4

嵌套的if結構

  • 使用嵌套的if……else語句是合法的。也就是說可以在if或else if中使用if或else if語句,可以像if語句一樣嵌套else if……else。
  • 語法:
    語法4

switch多選擇結構

  • 多選擇結構除了if和嵌套if之外的另一種實現方式就是switch case語句。
  • switch case語句判斷一個變數與一系列值中某個值是否相等,每個值稱為一個分支。
    語法:
    語法5
  • switch中的變數類型及註意事項:
    • 變數就是byte、short、int、char等八大基本類型
    • 從Java SE 7開始,switch支持字元串String類型的變數
    • 同時case標簽必須為字元串常量或字面量
      case 穿透
      switch 匹配一個具體的值
      break 可選,停止迴圈
      default 就是在上面的case中找不到傳入的值,會預設執行的語句

基本類型的展示

寫完一個case後如果並不想它都出現在所有情況下後面要加上break將它們分割開,需要穿透疊加操作時就可以不寫break。
比方說我這裡選定的是C,卻同時輸出了C與D,但是沒有輸出E,因為break將E隔開了。
例圖5

字元串的展示

這裡我就將字元串與default的功能展示了出來
例圖6

題外話

class 位元組碼文件
class文件沒法兒直接看懂,可以使用開發工具進行反編譯,比方說idea

  1. 首先如何查看已寫的代碼生成的class文件呢?
    可以在idea社區版右上角的設置里打開項目結構,就能看到輸出文件夾的位置
    項目結構位置
    輸出文件夾
  2. 將文件夾打開,找到自己想要進行反編譯的class文件
    文件夾
  3. 隨後打開代碼行的文件夾,將想要反編譯的class文件拖進去,就能看到想要反編譯的class文件的代碼內容了
    文件夾
    反編譯結果
  4. 也可以通過直接將class文件拖入idea實現上述操作

迴圈結構

  • while迴圈
  • do while迴圈
  • for迴圈
  • 主要用於數組的增強型for迴圈

while迴圈

while是最基本的迴圈,語法為:
語法6

  • 只要布爾表達式為true,迴圈就會一直執行下去
  • 大多數情況會讓迴圈停止,需要一個讓表達式失效的方式來結束迴圈
  • 少部分情況需要迴圈一直執行,比如伺服器的請求響應監聽等
  • 迴圈條件一直為true就會造成無限迴圈(死迴圈),正常的編程中應該儘量避免死迴圈。死迴圈會影響程式性能或造成程式卡死崩潰!
    接下來進行一個輸出1~100的迴圈:
public class WhileDemo01 {
    public static void main(String[] args) {
        //輸出1~100
        int i=0;
        while (i<100){
            i++;
            System.out.println(i);
        }
    }
}

我這裡給了i<100的限制,因此i到了99就會停止執行,輸出結果為100
例圖7
死迴圈就是沒有進行限定的,這樣的格式:
死迴圈
加法的運算:
例圖8

do while迴圈

  • 對於while語句而言,如果不滿足條件則不會進入迴圈。do...while迴圈和while迴圈類似,不同的是,do...while至少會執行一次。
    語法:
    do...while
  • while是先判斷後執行,do...while是先執行後判斷。
    剛剛那個1+2+3+...+100=?的例子同樣也能用do...while執行,並且執行結果沒有區別。
    例子9
    但是當我進行這樣一串代碼後就能明顯看出兩者的差別:
public class DoWhileDemo02 {
    public static void main(String[] args) {
        int a=0;
        while (a<0){
            System.out.println(a);
            a++;
        }
        System.out.println("=================");
        do {
            System.out.println(a);
            a++;
        }while (a<0);
    }
}

中間的“=”是我用來做分割的文本。
例圖10
很顯然,“=”前為空,表示了while並沒有執行輸出a這個行為,而do...while執行了一次,因此輸出了基礎賦予的0的值,但因為沒有滿足條件,沒有輸出接下來的a++給予的賦值。

for迴圈

  • 雖然所有迴圈都可以用while,do...while迴圈來表示,但java中還有一種語句:for迴圈——使一些迴圈結構變得更加簡單
  • for迴圈語句是支持迭代的一種通用迴圈結構,是最有效最靈活的迴圈結構
  • for迴圈的執行次數是在執行前就確定的,語法格式如下:
    語法7
    雖然和while迴圈一樣需要初始化,條件判斷與迭代,但是for迴圈的整體結構更為直觀,對比如下:
    對比
    關於for迴圈的說明:
  1. 最先執行初始化步驟,可以聲明一種類型,可初始化一個或多個迴圈控制變數,也可以是空語句。
  2. 檢測布爾表達式的值,如果為true,迴圈體被執行,如果為false,迴圈終止,開始執行後續語句。
  3. 執行一次迴圈後,更新迴圈控制變數(迭代因數控制迴圈變數的增減)。
  4. 再次檢測布爾表達式,迴圈執行上面的過程。
    這個代碼即為for迴圈的死迴圈,無初始值,無條件判斷與迭代:
for ( ; ; ){
}

for迴圈的展示

println輸出完會換行,print輸出完不會換行!!!
假如我要用for迴圈輸出1~1000之內能被5整除的數,並且每行輸出3個,就可以這樣輸入:
換行

嵌套for迴圈的展示

輸出九九乘法表:

public class ForDemo04 {
    public static void main(String[] args) {
        for (int j = 1; j <= 9; j++) {
            for (int i = 1; i <= j; i++) {//i<=9會有重覆輸出,因此這裡i<=j去掉重覆的輸出
                System.out.print(j+"*"+i+"="+(j*i)+"\t");//用\t進一格
            }
            System.out.println();//System.out.print("\n")換行
        }
    }
}

九九乘法表

增強for迴圈

增強for迴圈的語法:
語法

  • 聲明語句:聲明新的局部變數,該變數的類型必須和數組元素的類型匹配。其作用域限定在迴圈語句塊,其值與此時數組元素的值相等。
  • 表達式:表達式是要訪問的數組名,或者是返回值為數組的方法。
    如下這串代碼,上面的是普通for迴圈,下麵的是增強for迴圈,實現的操作是一樣的,都是將數組中的每個值都輸出一遍。
    • for迴圈:numbers[i]中i是次數,從numbers數組中取值的次數,就是取值了5次numbers中的數值
    • 增強for迴圈:直接將數組的值賦予x
    • 本質一樣,但是增強for更加簡化
public class ForDemo05 {
    public static void main(String[] args) {
        int[]numbers={10,20,30,40,50};//定義數組
        for (int i = 0; i < 5; i++) {
            System.out.println(numbers[i]);
        }
        System.out.println("===================");
        for (int x:numbers){//遍曆數組元素
            System.out.println(x);
        }
    }
}

輸出結果如下:
結果

goto關鍵字

  • 關於goto關鍵字:
    • goto關鍵字很早就在程式設計語言中出現。儘管goto仍然是java的一個保留字,但並未在語言中正式使用,java沒有goto。然而,在break和continue這兩個關鍵字的身上,仍然能看出一些goto的影子——帶標簽的break和continue。
    • “標簽”是指後面跟一個冒號的標識符,例如: label:
    • 對java來說唯一用到標簽的地方是在迴圈語句之前。而在迴圈之前設置標簽的唯一理由是:我們希望在其中嵌套另一個迴圈,break和continue關鍵字通常只中斷當前迴圈,但若隨同標簽使用,它們就會中斷到存在標簽的地方。
      標簽
  • break在任何迴圈語句的主體部分,均可用break控制迴圈的流程。break用於強行退出迴圈,不執行迴圈中剩餘的語句。(break語句也在switch語句中使用)
    break
  • continue語句用在迴圈語句體中,用於終止某次迴圈過程,即跳過迴圈體中尚未執行的語句,接著進行下一次是否執行迴圈的判定。
    continue

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、概念 • REF游標和游標變數用於處理運行時動態執行的SQL查詢的結果集。 • 創建游標變數有兩個步驟: • 聲明REF游標類型 • 聲明REF游標類型的游標變數 • 聲明REF游標的語法: type 游標類型名 is ref cursor [return 返回值類型] 二、區別 • 靜態游標和 ...
  • 1、FastDFS 1.1、瞭解基礎概念 1.1.1、什麼是分散式文件系統? 全稱:Distributed File System,即簡稱的DFS 這個東西可以是一個軟體,也可以說是伺服器,和tomcat差不多,即相當於軟體也相當於是伺服器,這個軟體就是用來管理文件的 這個軟體所管理的文件通常不是在 ...
  • React兄弟組件之間的通信 Child2組件需要去更改Child1組件中的數據。 因為Child1和Child2是兄弟組件 所以數據和事件都放在最進的父級組件中去 兄弟組件通信的簡單使用 import React from 'react'; //這個是react這個包,我們是需要的 import ...
  • 組件中的props 在react中,props的特點是: 1.可以給組件傳遞任意類型的數據 2.props是只讀的對象,只能夠讀取屬性的值,無法修改對象 如過我們強行修改數據,會報錯,告訴我們該屬性是只讀屬性。 ps:在類組件中,如果寫了構造函數,應該將props傳遞給super(). 否則無法在構 ...
  • 本文目錄: 字體標簽 我是字體標簽 <font> 我是字體標簽 </font> 效果: 我是紅色 <font color="red"> 我是紅色 </font> 效果: 我是楷體 <font face="楷體"> 我是楷體 </font> 效果: 我是4號字體 <font size="4"> 我是4 ...
  • 兩個特性說明Dapr是比SpringCloud和Istio更有前途的微服務開發框架。 ...
  • 從本篇文章開始,筆者打算寫一個系列的《clickhouse專欄》,其全稱是Click Stream,Data WareHouse,簡稱ClickHouse。從其全稱中的“Data WareHouse”,我們可以看出clickhouse的定位是數據倉庫。那麼“數據倉庫”和“資料庫”有什麼區別呢?理解這 ...
  • 1 與其它協程庫使用對比 這個 C 協程庫是雲風(cloudwu) 寫的,其介面風格與 Lua 協程類似,並且都是非對稱 stackful 協程。這個是源代碼中的示例: #include "coroutine.h" #include <stdio.h> struct args { int n; }; ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...