硅基計劃2.0 學習總結 貳


一、程序邏輯控制(順序、選擇&循環)

順序結構就不多介紹了,就是各個語句按照先后順序進行執行

(1)選擇結構

三大選擇類型:if、if-else、if-else if-else以及懸浮else的問題

基本已經在之前在C語言文章已經講過,這里不過多贅述

只需要注意兩個問題

1、Java中條件表達式只能是布爾型(Boolean,即結果是True或False)

2、表達式不能寫的太復雜,比如你把短路表達式寫進去,編譯器可能會報錯之前的C語言博客https://blog.csdn.net/Pluchon/article/details/147186769?fromshare=blogdetail&sharetype=blogdetail&sharerId=147186769&sharerefer=PC&sharesource=Pluchon&sharefrom=from_link

這里我們著重來講下在Java中代碼書寫風格:示例代碼↓

int num1 = 5;
if (num1 % 2 == 0) {System.out.println("是偶數");} else {System.out.println("是奇數");
}
int num2 = -1;
if (num2 > 0) {System.out.println("是正數");} else if (num2 < 0) {System.out.println("是負數");} else {System.out.println("是0");
}

在Java中,我們起始大括號“{”寫在條件判斷右邊

而結束大括號“}”寫在左邊并且寫在else之前

如果你有很多代碼需要格式化成這種格式怎么辦?

在Java的一個編譯器Idea中,我們可以選中區域按住快捷鍵Ctrl+Alt+L

這個之前也有介紹過,但是在Java中有幾個特殊之處:之前的博客文章https://blog.csdn.net/Pluchon/article/details/147191166?fromshare=blogdetail&sharetype=blogdetail&sharerId=147191166&sharerefer=PC&sharesource=Pluchon&sharefrom=from_link

1、Switch表達式可寫字符型,比如下面這段代碼,結果自然就是輸出正確啦

char str1 = '中';switch (str1) {case '中':System.out.println("輸出正確");break;default:System.out.println("輸出錯誤");break;}

2、表達式不能是Long、Float、Double、Boolean這四大類

(2)循環結構

這個之前也介紹過了,但是在Java中有幾個特殊之處:之前的博客文章https://blog.csdn.net/Pluchon/article/details/147191166?fromshare=blogdetail&sharetype=blogdetail&sharerId=147191166&sharerefer=PC&sharesource=Pluchon&sharefrom=from_link1、Java中不可用寫while(1)這種死循環,要寫也只能寫while(true)

2、Java中創建循環有快捷方式:輸入for后選擇fori,直接生成循環模板

3、之前的博客文章有個尋找素數的題,里面有個循環終止條件

4.在Java中我們開平方可直接寫成Math.sqrt()即可

我們寫一個求水仙花數的Java代碼:

public static void main6(String[] args) {//求出0~n之間的所有“水仙花數”并輸出int simple4 = 1;while(simple4<10){System.out.print(simple4+" ");simple4++;}System.out.print("\n");int num3 = 10;while(num3<=99999){int count = 0;//先統計是幾位數int temp = num3;while(temp != 0) {temp /= 10;count++;}int sum = 0;//用來計算次方和temp = num3;while(temp != 0){sum += Math.pow(temp%10,count);temp /= 10;}if(sum==num3){System.out.print(num3+" ");}num3++;}}

二、程序輸入&輸出

(1)程序的輸出

基本上跟C語言差不多,唯一有區別的就是print和println,以下是區別:

System.out.println("hello world");//這個是換行輸出
System.out.print("hello world"+" ");//這個是不換行輸出
System.out.printf("%s","hello world");//這個是格式化規范輸出,很少使用

(2)程序的輸入

對比C語言我們Java的輸入需要使用Scanner包裝類處理我們的輸入

其中必須寫的一行代碼:

import java.util.Scanner;
Scanner sc = new Scanner(System.in);

注意:我們在輸入Scanner后回車,會自動進行導包操作

Scanner后面的sc可以取其他名字,但建議sc


其次,我們再創建變量,接收我們輸入的值

int input = sc.nextInt();

注意:你輸入的是什么類型,初始化成什么類型,目前只能讀取到一個輸入的值

這里我們講下next和nextLine的區別:next遇到空格讀取停止,而nextLine會讀取一行的內容


在你處理完輸入程序后,最后可以選擇關閉Scanner的資源

sc.close();

System.out.println("年齡");int age = sc.nextInt();System.out.println("姓名");String high = sc.nextLine();//注意看這里是nextLineSystem.out.println("年齡:"+age);System.out.println("姓名:"+high);

為什么我輸入年齡后敲完空格回車直接打印結果了呢,我姓名都沒來得及輸入啊

注意看代碼,nextLine讀取的是一行的內容,而你輸入完年齡后回車會產生一個空行

nextLine把這一行誤以為是你輸入的內容,把它讀取走了

只需要再添加一個nextLine來讀取空白行就好

System.out.println("年齡");int age = sc.nextInt();sc.nextLine();//單獨添加這一行,讓這一行把空行讀走System.out.println("姓名");String high = sc.nextLine();System.out.println("年齡:"+age);System.out.println("姓名:"+high);


循環輸入,我們就寫一個求和的循環輸入吧

int sum = 0;while(sc.hasNextInt()) {int input = sc.nextInt();//←畢竟這里是nextIntsum += input;}System.out.println(sum);

hasNextInt中int類型表示你輸入除整數以外的數循環終止

建議輸入什么就寫什么類型的hasNext

注意這段代碼有個陷阱:

你提前終止循環輸入,會導致你輸入的數沒有加到sum中去,你輸入完數后回車以下
此時再按ctrl+d才會有正確結果

三、使用方法

public static void main(String[] args) {

我們上面那一行就是main方法的基本格式

public static是修飾符,void是返回類型,main是方法名,括號里的東西是形參

你可以把方法理解成一個工廠,原材料進去成品出來

Java中的方法不需要聲明,而且你寫哪里都可以

畢竟Java是全局搜索的,而且方法不可以嵌套,不像C/C++函數一樣

其生命周期,作用域,就是在“{}”內部,進入開始,出去結束 如何調用方法呢?

我們這里創建一個求兩數之和的方法,然后就跟C語言調用函數一樣去調用方法

public static int addSimple (int num1,int num2){int ret = num1+num2;return ret;}

如果這個方法有返回類型,我們就用一個變量來接收

如果方法無返回值,則默認是為void,不需要寫變量來接收

注意你方法返回的是什么類型,你就需要用什么類型去接收

int result = addSimple(1,2);

因此我們方法的創建和調用之間形成了三匹配:

方法返回類型,返回值類型,接受方法返回值的變量的類型

你肯定寫過在C語言中通過函數交換兩個數字,用的是地址

但是在Java中,不存在地址的概念,所以Java很安全

public static void swap(int num3,int num4){//這個是方法的定義int temp = num3;num3 = num4;num4 = temp;
}int num3 =1,num4 = 2;swap(1,2);System.out.println(num3+" "+num4);

我們發現并沒有交換,原理跟C語言差不多,你形參只是實參的一份臨時拷貝

也就是說形參有自己的一塊空間,你交換了形參并不等于交換了實參

在Java中只有傳值調用,而且方法調用同樣是要在棧上開辟空間

四、方法重載

接著我們將方法重載,這個跟C++很像

我們每個重構的方法可以去相同的方法名,在方法調用的時候編譯器自己選擇

重載三個條件

方法名相同,(參數列表/參數類型/參數個數)不同,并且和返回類型無關!!

我們就拿兩數之和來舉例

public static int addSimple (int num1,int num2){int ret = num1+num2;return ret;//return作為方法結束的標志}public static double addSimple (double num1,double num2){double ret = num1+num2;return ret;}int ret1 = addSimple(1,2);double ret2 =addSimple(1.5,2.5);

下滿那個方法就是addSimple方法的重載,這個重構的方法是專門求浮點型的

函數返回值支持鏈式表達式,比如return (1/2)+6

僅僅改變方法返回值類型是不會構成方法重載的

?五、方法遞歸

在C語言中函數有遞歸,那在Java中方法自然也有遞歸,基本上和C語言類似

這里列出特殊之處:如果你無線遞歸下去,沒有終止條件,會導致棧溢出,報錯如下

給出一個例題練習:遞歸一個數字,并把各個位數數字求和,比如2255,各個位數之和是14

public static void print(int num){if(num<10){System.out.print(num+" ");}else {print(num / 10);//遞推System.out.print(num % 10+" ");//回歸的時候打印}}int ret5 = addPlus(2255);
System.out.println(ret5);

為什么不寫else會導致棧溢出?
這是因為在if中不存在return語句,return語句作用就是終止后面代碼執行
即使你的num小于了10,上面執行完了,下面的else部分還是會執行


之前在C語言已經寫過很多遞歸練習,這里給出之前寫的博客鏈接,寫法基本上一致

C語言中遞歸介紹和練習https://blog.csdn.net/Pluchon/article/details/147530549?fromshare=blogdetail&sharetype=blogdetail&sharerId=147530549&sharerefer=PC&sharesource=Pluchon&sharefrom=from_linkC語言中遞歸經典練習https://blog.csdn.net/Pluchon/article/details/147514375?fromshare=blogdetail&sharetype=blogdetail&sharerId=147514375&sharerefer=PC&sharesource=Pluchon&sharefrom=from_link

這里給出Java遞歸的漢諾塔問題的代碼

public static void hanNuoTa (int num,char pos1,char pos2,char pos3){if(num==1) {//遞歸終止條件System.out.print(pos1+"→"+pos3+" ");}else {//一定要寫else,因為遞歸式子中無return,會導致無限遞歸hanNuoTa(num - 1, pos1, pos3, pos2);System.out.print(pos1 + "→" + pos2+" ");hanNuoTa(num - 1, pos2, pos1, pos3);}}public static void main(String[] args) {Scanner sc = new Scanner(System.in);int input = sc.nextInt();hanNuoTa(input,'A','B','C');}


作者基礎不是很強,文章撰寫難免會有疏漏之處,歡迎指出,我們友好交流


Git碼云倉庫鏈接:

本文章使用的代碼https://gitee.com/pluchon/java-career/tree/master/TestProject20250515/src


END

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

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

相關文章

RabbitMQ最新入門教程

文章目錄 RabbitMQ最新入門教程1.什么是消息隊列2.為什么使用消息隊列3.消息隊列協議4.安裝Erlang5.安裝RabbitMQ6.RabbitMQ核心模塊7.RabbitMQ六大模式7.1 簡單模式7.2 工作模式7.3 發布訂閱模式7.4 路由模式7.5 主題模式7.6 RPC模式 8.RabbitMQ四種交換機8.1 直連交換機8.2 主…

工具學習_VirusTotal使用

VirusTotal Intelligence 允許用戶在其龐大的數據集中進行搜索&#xff0c;以查找符合特定條件的文件&#xff0c;例如哈希值、殺毒引擎檢測結果、元數據信息、提交時的文件名、文件結構特征、文件大小等。可以說&#xff0c;它幾乎是惡意軟件領域的“谷歌搜索引擎”。 網頁使…

計算機系統----軟考中級軟件設計師(自用學習筆記)

目錄 1、計算機的基本硬件系統 2、CPU的功能 3、運算器的組成 4、控制器 5、計算機的基本單位 6、進制轉換問題 7、原碼、反碼、補碼、移碼 8、浮點數 9、尋址方式 10、奇偶校驗碼 11、海明碼 12、循環冗余校驗碼 13、RISC和CISC 14、指令的處理方式 15、存儲器…

揚州卓韻酒店用品:優質洗浴用品,提升酒店滿意度與品牌形象

在酒店提供的服務里&#xff0c;沐浴用品占據了非常重要的地位&#xff0c;其質量與種類直接關系到客人洗澡時的感受。好的沐浴用品能讓客人洗澡時感到舒心和快樂&#xff0c;反之&#xff0c;質量不好的用品可能會影響客人整個住宿期間的愉悅心情。挑選恰當的洗浴用品不僅能夠…

學習筆記:黑馬程序員JavaWeb開發教程(2025.4.5)

12.4 登錄認證-登錄校驗-會話跟蹤方案一 設置cookie&#xff0c;服務器給瀏覽器響應數據&#xff0c;通過control方法形參當中獲取response&#xff0c;調用response當中的addCookie方法實現 獲取cookie&#xff0c;調用getCookie方法 用戶可以通過瀏覽器設置禁用cookie 跨域…

進程替換講解

1. 基本概念 1.1 進程替換 vs. 進程創建 進程創建&#xff1a;使用fork()或clone()等系統調用創建一個新的子進程&#xff0c;子進程是父進程的副本&#xff0c;擁有相同的代碼和數據。進程替換&#xff1a;使用exec系列函數在當前進程中加載并執行一個新的程序&#xff0c;替…

【微服務】SpringBoot + Docker 實現微服務容器多節點負載均衡詳解

目錄 一、前言 二、前置準備 2.1 基本環境 2.2 準備一個springboot工程 2.2.1 準備幾個測試接口 2.3 準備Dockerfile文件 2.4 打包上傳到服務器 三、制作微服務鏡像與運行服務鏡像 3.1 拷貝Dockerfile文件到服務器 3.2 制作服務鏡像 3.3 啟動鏡像服務 3.4 訪問一下服…

1.2.2.1.4 數據安全發展技術發展歷程:高級公鑰加密方案——同態加密

引言 在密碼學領域&#xff0c;有一種技術被圖靈獎得主、著名密碼學家Oded Goldreich譽為"密碼學圣杯"&#xff0c;那就是全同態加密&#xff08;Fully Homomorphic Encryption&#xff09;。今天我們就來聊聊這個神秘而強大的加密方案是如何從1978年的概念提出&…

vllm量化03—INT4 W4A16

本系列基于Qwen2.5-7B&#xff0c;學習如何使用vllm量化&#xff0c;并使用benchmark_serving.py、lm_eval 測試模型性能和評估模型準確度。 測試環境為&#xff1a; OS: centos 7 GPU: nvidia l40 driver: 550.54.15 CUDA: 12.3本文是該系列第3篇——INT4 W4A16 一、量化 f…

第二十五天打卡

常見報錯類型 try-except-else-finally 語句 首先執行try語句&#xff0c;若正確直接執行else語句 若try語句發生錯誤&#xff0c;則判斷錯誤類型&#xff0c;執行錯誤類型對應的except語句&#xff0c;不執行else語句 finally語句無條件執行&#xff0c;多用于資源保存&…

城市掃街人文街頭紀實膠片電影感Lr調色預設,DNG/手機適配濾鏡!

調色詳情 城市掃街人文街頭紀實膠片電影感 Lr 調色是通過 Lightroom&#xff08;Lr&#xff09;軟件&#xff0c;對城市街頭抓拍的人文紀實照片進行后期調色處理。旨在賦予照片如同膠片拍攝的質感以及電影般濃厚的敘事氛圍&#xff0c;不放過每一個日常又珍貴的瞬間&#xff0c…

【hadoop】Kafka 安裝部署

一、Kafka安裝與配置 步驟&#xff1a; 1、使用XFTP將Kafka安裝包kafka_2.12-2.8.1.tgz發送到master機器的主目錄。 2、解壓安裝包&#xff1a; tar -zxvf ~/kafka_2.12-2.8.1.tgz 3、修改文件夾的名字&#xff0c;將其改為kafka&#xff0c;或者創建軟連接也可&#xff1…

UDP 多點通信

一、setsockopt/getsockopt 函數詳解 1. 函數原型 c #include <sys/socket.h> int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen); int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);…

說一說Node.js高性能開發中的I/O操作

眾所周知&#xff0c;在軟件開發的領域中&#xff0c;輸入輸出&#xff08;I/O&#xff09;操作是程序與外部世界交互的重要環節&#xff0c;比如從文件讀取數據、向網絡發送請求等。這段時間&#xff0c;也指導項目中一些項目的開發工作&#xff0c;發現在Node.js運用中&#…

Charles抓包并破解ProtoBuf請求

安裝Charles并抓包 如果是外網的需要root安裝一系列證書等&#xff0c;詳細見參考文章&#xff1a; 在雷電模擬器安卓7.0上使用Charles抓包詳細教程 遇到如下問題&#xff1a; 1.粘貼到目錄/system/etc/security/cacerts內&#xff0c;粘貼不了。需要打開這個 2.模擬器wifi打…

Odoo 18 安全組與訪問權限管理指南

Odoo 18 安全組與訪問權限管理指南 一、準備工作&#xff1a;在自定義模塊中創建安全配置文件 創建 security 文件夾 在自定義模塊內創建名為 security 的文件夾&#xff0c;用于存放安全組和訪問權限的定義文件。 二、定義模型訪問權限&#xff1a;ir.model.access.csv 文…

使用lldb查看Rust不同類型的結構

目錄 前言 正文 標量類型 復合類型——元組 復合類型——數組 函數 &str struct 可變數組vec Iter String Box Rc Arc RefCell Mutex RwLock Channel 總結 前言 筆者發現這個lldb挺好玩的&#xff0c;可以查看不同類型的結構&#xff0c;雖然這好像是C的東…

uniapp使用ui.request 請求流式輸出

正文&#xff1a; 在現代Web開發中&#xff0c;實時數據流和長時間運行的請求變得越來越常見&#xff0c;尤其是在處理大量數據或進行實時通信時。在這種情況下&#xff0c;uniapp 提供的 ui.request 請求方法可以幫助我們輕松實現流式輸出請求。本文將介紹如何使用 uni.reques…

如何恢復被勒索軟件加密的服務器文件(解密與備份策略)

針對勒索軟件加密文件的恢復和解密策略&#xff0c;結合當前數據安全最佳實踐&#xff0c;整理應對指南如下&#xff1a; 一、文件解密與修復方法 立即隔離設備? 斷開網絡連接并禁用共享功能&#xff0c;防止病毒橫向傳播 通過文件后綴異常&#xff08;如.locked、.wxx&…

JS,ES,TS三者什么區別

Java Script(JS)、ECMAScript(ES)、TypeScript(TS) 的核心區別與關聯的詳細解析,結合技術背景、設計目標及應用場景展開說明: 一、核心定義與關系 JavaScript(JS) 定義:一種動態類型、基于原型的腳本語言,由 Netscape 公司于 1995 年首次開發,用于網頁交互功能。角…