政府網(wǎng)站html5媒體平臺(tái)
前言
Java編程語言是一門廣泛應(yīng)用于軟件開發(fā)領(lǐng)域的高級(jí)編程語言。它的強(qiáng)大特性和跨平臺(tái)性使其成為許多開發(fā)者的首選語言。本文將介紹一些Java編程的關(guān)鍵概念,包括函數(shù)重載、可變參數(shù)、值傳遞、遞歸等,這些概念是Java編程的基礎(chǔ),對(duì)于理解和掌握J(rèn)ava語言至關(guān)重要。
Java基礎(chǔ)學(xué)習(xí)筆記-1
Java基礎(chǔ)學(xué)習(xí)筆記-2
Java基礎(chǔ)學(xué)習(xí)筆記-3
Java基礎(chǔ)學(xué)習(xí)筆記-4
1. 函數(shù)重載(Function Overloading)
函數(shù)重載是一種 Java 編程中的常見概念,它允許在同一個(gè)類中定義多個(gè)具有相同名稱但不同參數(shù)列表的方法。以下是一個(gè)函數(shù)重載的示例:
public class Demo01 {public static void main(String[] args) {f01(1.0);f01(1);}public static void f01(double money) {System.out.println("f01(double money) 被調(diào)用了");}public static int f01(int age) {System.out.println("f01(int age) 被調(diào)用了");return 100;}
}
請(qǐng)注意,函數(shù)重載與返回值無關(guān),只與參數(shù)列表有關(guān)。
2. 可變參數(shù)(Varargs)
可變參數(shù)是 Java 中一種強(qiáng)大的功能,允許方法接受不定數(shù)量的參數(shù)。以下是一個(gè)可變參數(shù)的示例:
public class Demo02 {public static void main(String[] args) {f01(new int[]{1,3,5,7,9});f01();f01(1);f01(1, 2);f01(1, 2, 3);}public static void f01(int... x) {System.out.println("f01(int...) 被調(diào)用了");System.out.println(Arrays.toString(x));}
}
無論傳遞多少參數(shù),可變參數(shù)方法將它們視為一個(gè)整數(shù)數(shù)組。
3. 可變參數(shù)與增強(qiáng)型for循環(huán)
在 Java 中,可變參數(shù)與增強(qiáng)型for循環(huán)可以結(jié)合使用,以處理不定數(shù)量的參數(shù)。以下是一個(gè)示例:
public class Demo03 {public static void main(String[] args) {f01(new int[]{1,3,5,7,9});f01();f01(1);f01(1, 2);f01(1, 2, 3);}public static void f01(int... arr) {System.out.println("f01(int...) 被調(diào)用了");// 自動(dòng)循環(huán)arr數(shù)組,也知道何時(shí)結(jié)束,每次取出一個(gè)送到變量a上for (int a : arr) { // foreach輸出(增強(qiáng)版for循環(huán)),沒有下標(biāo)了System.out.println(a);}}
}
上面的示例演示了如何使用可變參數(shù)來接受不定數(shù)量的整數(shù)參數(shù),并且使用增強(qiáng)型for循環(huán)遍歷這些參數(shù)。這使得處理不定數(shù)量的參數(shù)變得更加方便。
4. 基本數(shù)據(jù)類型的值傳遞
在 Java 中,基本數(shù)據(jù)類型的傳遞是按值傳遞的,這意味著方法接收的是原始值的副本,而不是原始變量本身。以下是一個(gè)示例:
public class Demo04 {public static void main(String[] args) {int y = 10;f01(y); // y實(shí)參。都是值傳遞。System.out.println("Y:" + y);}/*x,形參*/public static void f01(int x) {System.out.println(x);x++;System.out.println(x);}
}
在這個(gè)示例中,f01
方法接收了變量y
的值,然后對(duì)這個(gè)值進(jìn)行了操作。但是,這不會(huì)影響到原始變量y
的值,因此在打印y
時(shí)仍然輸出10。
5. 數(shù)組的值傳遞
與基本數(shù)據(jù)類型不同,數(shù)組在傳遞給方法時(shí)也是按值傳遞的。然而,數(shù)組的值是數(shù)組的引用,而不是數(shù)組的內(nèi)容。這意味著在方法內(nèi)對(duì)數(shù)組的操作會(huì)影響到原始數(shù)組。以下是一個(gè)示例:
import java.util.Arrays;public class Demo05 {public static void main(String[] args) {int[] y = {10, 20, 30};f01(y); // y實(shí)參。都是值傳遞。System.out.println("y: " + Arrays.toString(y));}/*x,形參*/public static void f01(int[] x) {System.out.println(Arrays.toString(x));x[1]++;System.out.println(Arrays.toString(x));}
}
在這個(gè)示例中,f01
方法接收了整數(shù)數(shù)組y
的引用。當(dāng)在方法內(nèi)部修改數(shù)組元素時(shí),原始數(shù)組也會(huì)受到影響,因此在打印y
時(shí),第二個(gè)元素的值已經(jīng)被修改。
6. 遞歸列出文件
在 Java 編程中,遞歸是一種強(qiáng)大的技術(shù),可用于處理文件和目錄的層次結(jié)構(gòu)。以下是一個(gè)示例程序,演示如何遞歸地列出指定目錄下的所有文件和子目錄中的文件:
import java.io.File;public class Demo06 {public static void main(String[] args) {showFiles(new File("D:\\202203\\正科\\08_補(bǔ)充\\附件\\a"));}/*展示文件夾下所有的文件,包含子文件夾下的文件*/public static void showFiles(File file) {File[] files = file.listFiles(); // 枚舉該文件夾file對(duì)象下的文件或文件夾對(duì)象for (File f : files) {if (f.isFile()) System.out.println(f.getName()); // 文件if (f.isDirectory()) showFiles(f); // 遞歸調(diào)用文件夾}}
}
這個(gè)示例中,我們使用了遞歸方法showFiles
來遍歷指定目錄下的所有文件和子目錄。具體步驟如下:
showFiles
方法接受一個(gè)File
對(duì)象作為參數(shù),該對(duì)象表示要列出文件的目錄。- 使用
listFiles
方法獲取目錄下的所有文件和子目錄,并將它們存儲(chǔ)在files
數(shù)組中。 - 使用增強(qiáng)型for循環(huán)遍歷
files
數(shù)組中的每個(gè)文件或目錄。 - 對(duì)于每個(gè)元素,我們檢查它是否是一個(gè)文件(
f.isFile()
)。如果是文件,我們打印文件名。 - 如果元素是一個(gè)目錄(
f.isDirectory()
),則遞歸調(diào)用showFiles
方法,以便繼續(xù)遍歷該目錄的內(nèi)容。
這個(gè)示例展示了如何使用遞歸來處理文件和目錄結(jié)構(gòu),是處理文件系統(tǒng)操作的常見用例之一。
7. 遞歸求和
遞歸是一種函數(shù)調(diào)用自身的編程技巧。以下是一個(gè)遞歸的示例:
public class Demo07 {public static void main(String[] args) {System.out.println(sum(100));}public static int sum(int count) {if (count == 1) return 1; // 結(jié)束條件return sum(count-1) + count; // 遞歸表達(dá)式}
}
這個(gè)示例演示了一個(gè)遞歸函數(shù)sum,它從1遞歸到給定的正整數(shù)count并計(jì)算總和。遞歸的結(jié)束條件是count等于1,然后通過遞歸表達(dá)式sum(count-1) + count計(jì)算總和。
遞歸是一種強(qiáng)大的編程技巧,可以用于解決許多問題,但需要小心處理遞歸的結(jié)束條件,以避免無限遞歸。
總結(jié)
本文詳細(xì)介紹了Java編程中的幾個(gè)重要概念,包括函數(shù)重載、可變參數(shù)、值傳遞和遞歸。這些概念是Java編程的基礎(chǔ),對(duì)于編寫高效、靈活的Java代碼至關(guān)重要。通過學(xué)習(xí)本文中的示例和解釋,讀者可以更好地掌握這些概念,提高自己的Java編程技能。無論是初學(xué)者還是有經(jīng)驗(yàn)的開發(fā)者,都可以從本文中獲得有價(jià)值的知識(shí),幫助他們?cè)贘ava編程領(lǐng)域取得成功。在未來的項(xiàng)目中,這些概念將成為解決復(fù)雜問題和開發(fā)強(qiáng)大應(yīng)用程序的重要工具。