Java入門-Day7:函數

閱讀時間約 9 分鐘

函數的基本結構

函數聲明

在Java中,函數通常被稱為方法(method)。方法包含方法名稱、參數列表和方法體。

public class FunctionExample {

// 函數聲明
public static void sayHello() {
System.out.println("Hello, World!");
}

public static void main(String[] args) {
// 函數的呼叫
sayHello();
}
}

函數表達式(Java 8+)

Java 8引入了Lambda表達式,可以用來簡化函數的定義。Lambda表達式通常用於函數接口(Functional Interface)的實現。

public class FunctionExpressionExample {

public static void main(String[] args) {
// 使用Lambda表達式定義函數
Runnable runnable = () -> {
System.out.println("Hello, Lambda!");
};

// 呼叫run方法,執行Lambda表達式
runnable.run();
}
}

箭頭函數(Java 11+)

Java 11引入了箭頭函數,這是對Lambda表達式的進一步簡化,特別是用於只有一個表達式的函數。

public class ArrowFunctionExample {

public static void main(String[] args) {
// 箭頭函數示例
Runnable runnable = () -> System.out.println("Hello, Arrow Function!");

// 呼叫run方法,執行箭頭函數
runnable.run();
}
}

匿名函數

匿名函數是沒有名稱的函數,通常用於定義事件處理程序或簡短的功能。

public class AnonymousFunctionExample {

public static void main(String[] args) {
// 匿名函數示例
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("Hello, Anonymous Function!");
}
};

// 呼叫run方法,執行匿名函數
runnable.run();
}
}

函數的呼叫

函數的呼叫通過其名稱後跟括號完成,可以根據需要向函數傳遞參數。

public class FunctionCallExample {

public static void printMessage(String message) {
System.out.println(message);
}

public static void main(String[] args) {
// 呼叫函數並傳遞參數
printMessage("Hello, Function Call!");
}
}

函數的參數

單個參數

public class SingleParameterExample {

public static void greetPerson(String name) {
System.out.println("Hello, " + name + "!");
}

public static void main(String[] args) {
// 傳遞單個參數給函數
greetPerson("Alice");
}
}

多個參數

public class MultipleParametersExample {

public static void printSum(int a, int b) {
System.out.println("Sum: " + (a + b));
}

public static void main(String[] args) {
// 傳遞多個參數給函數
printSum(5, 3);
}
}

預設參數值

Java中沒有預設參數值的概念,但可以使用方法重載來達到類似的效果。

剩餘參數

Java中的剩餘參數(Varargs)允許方法接受可變數量的參數。

public class VarargsExample {

public static void printNumbers(String... numbers) {
for (String number : numbers) {
System.out.println(number);
}
}

public static void main(String[] args) {
// 傳遞不定數量的參數給函數
printNumbers("1", "2", "3");
printNumbers("4", "5");
}
}

函數的返回值

單個返回值

public class SingleReturnValueExample {

public static int addNumbers(int a, int b) {
return a + b;
}

public static void main(String[] args) {
// 返回單個值的函數
int result = addNumbers(3, 4);
System.out.println("Sum: " + result);
}
}

返回物件

public class ObjectReturnValueExample {

public static Person createPerson(String name, int age) {
return new Person(name, age);
}

public static void main(String[] args) {
// 返回物件的函數
Person person = createPerson("Alice", 30);
System.out.println("Person: " + person.getName() + ", " + person.getAge());
}
}

class Person {
private String name;
private int age;

public Person(String name, int age) {
this.name = name;
this.age = age;
}

public String getName() {
return name;
}

public int getAge() {
return age;
}
}

返回函數

在Java中,函數也可以作為另一個函數的返回值返回。

public class FunctionAsReturnValueExample {

public static Runnable getRunnable() {
return () -> System.out.println("Hello, Function as Return Value!");
}

public static void main(String[] args) {
// 返回函數的函數
Runnable runnable = getRunnable();
runnable.run();
}
}

avatar-img
15會員
111內容數
日後將分享關於我的經驗(日常、工作、技術),並期待未來能創造屬於我的宇宙。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Michael楊 的其他內容
此章節的目的是介紹Java程式語言中的流程控制結構,包括條件語句(if, else if, else)、三元運算子、switch語句,以及各種迴圈(for, foreach, while)。同時,也解釋了如何在迴圈中使用控制語句來改變程式的執行流程。每種主題都配有示例程式碼以幫助理解。
本章節的目的是介紹Java中的運算符,包括算數運算符、比較運算符、賦值運算符、位元運算符以及運算符的優先等級。通過本章節,讀者可以了解到如何在Java中進行基本的數學運算、比較兩個值的大小、將值賦給變數、進行位元運算,以及在複雜表達式中如何正確地理解運算符的優先等級。
此章節旨在介紹Java程式語言中的各種資料型別,包括基本型別、引用型別、集合型別、陣列型別、字典型別等。它還講解了如何在Java中進行型別轉換和自定義型別,並提供了相關的程式碼示例。
此章節旨在引導讀者如何建立Java開發環境,包括安裝JDK、使用命令行工具編寫和運行Java程式,以及如何在Visual Studio Code、IntelliJ IDEA和Eclipse等IDE中設置和使用Java環境。
此章節旨在介紹Java的基本語法、註解和變數的使用。透過學習,讀者將了解Java程式的基本結構、程式進入點的定義、如何撰寫單行和多行註解,以及如何宣告和初始化變數。
這篇文章的目的是對Java程式設計語言進行介紹,包括它的特性、應用範疇、主要使用者,以及相關的學習資源和常見的庫與框架。此外,它也提供了一些學習Java的渠道,以及與Java相關的其他知識。
此章節的目的是介紹Java程式語言中的流程控制結構,包括條件語句(if, else if, else)、三元運算子、switch語句,以及各種迴圈(for, foreach, while)。同時,也解釋了如何在迴圈中使用控制語句來改變程式的執行流程。每種主題都配有示例程式碼以幫助理解。
本章節的目的是介紹Java中的運算符,包括算數運算符、比較運算符、賦值運算符、位元運算符以及運算符的優先等級。通過本章節,讀者可以了解到如何在Java中進行基本的數學運算、比較兩個值的大小、將值賦給變數、進行位元運算,以及在複雜表達式中如何正確地理解運算符的優先等級。
此章節旨在介紹Java程式語言中的各種資料型別,包括基本型別、引用型別、集合型別、陣列型別、字典型別等。它還講解了如何在Java中進行型別轉換和自定義型別,並提供了相關的程式碼示例。
此章節旨在引導讀者如何建立Java開發環境,包括安裝JDK、使用命令行工具編寫和運行Java程式,以及如何在Visual Studio Code、IntelliJ IDEA和Eclipse等IDE中設置和使用Java環境。
此章節旨在介紹Java的基本語法、註解和變數的使用。透過學習,讀者將了解Java程式的基本結構、程式進入點的定義、如何撰寫單行和多行註解,以及如何宣告和初始化變數。
這篇文章的目的是對Java程式設計語言進行介紹,包括它的特性、應用範疇、主要使用者,以及相關的學習資源和常見的庫與框架。此外,它也提供了一些學習Java的渠道,以及與Java相關的其他知識。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
Lazy evaluation 的效益必須是在 pipe 的組合上有最佳化過的,若組合的不好反而更糟糕,且在 I/O 上幫助似乎也不大。parallel stream 要能發揮效果必須看資料的來源類型,不過要注意的是 parallel stream 也會使記憶體的使用量增加,使用上也要小心。
Thumbnail
老實說,看到 Java Sream API 讓我感到相當親切,這應該跟我研究所多年的研究題目是 visual dataflow language 有關,Java Stream API 把迴圈給內化了,每個 operation 的重點是要做什麼,大大提高了程式的抽象化程度和可讀性。
Thumbnail
最後,Java 8 雖然支援 Lambda,但我覺得 Closure 某種程度上還不稱不上是 Java 的第一級居民,我還是比較喜歡寫一些小而易測的 class,而不是使用 Lambda,至於捕捉變數,透過建構子將變數帶入物件也是一種方式。
Thumbnail
Java 8 終於在 2014 的 3 月 18 日正式釋出了,不過自從用 Objective C 開發 iOS App後,我已經有好一陣子沒碰 Java,期間曾經有短暫寫一點點,但卻沒有時間去用 beta 版的 Java 8,直到最近才又開始玩一下。
Thumbnail
在 Kotlin 程式語言中,屬性訪問 (Property Access ) 提供了一種簡潔的方式來存取 Java 類別中的公開屬性欄位,可以省去 getter 與 setter 呼叫方法。
Thumbnail
在 IntelliJ IDEA 建立 Kotlin 專案時,要執行 Java 程式只需將其檔案命名為 .java,並放置在專案的 java 目錄中。這樣就可以順利執行該 Java 程式。
Thumbnail
@Throws 是 Kotlin 中用來標記函數可能會拋出(throw)特定類型異常的註解。當你使用這個註解標記一個函數時,表示這個函數可能會丟出指定的異常類型。這有助於告訴其他開發者,在使用你的函式時要特別注意處理這類異常情況。 例如,我們常在讀取檔案或是解析 API 特定 Json 欄位資料,若
Thumbnail
Kotlin 的函式可以作為參數使用,它們被歸類為一種資料型別,稱為「Function Types」。當 Java 呼叫這種型別的 Kotlin 函式時,會使用 invoke 關鍵字進行呼叫。通過反編譯程式碼,可以得知 Kotlin 中的 Function Types 資訊。
Thumbnail
當你在 Kotlin 程式語言中定義一個有預設參數的函數功能,並給它預設值,@JvmOverloads 可以自動產生多個重載版本的 Java 方法,每個版本都省略了部分參數,讓 Java 代碼可以更簡潔地呼叫這些方法,而不需要填寫所有參數。不會因為沒有預設值,而顯示錯誤。
Thumbnail
在混合開發的 Java 和 Kotlin 項目中,函數命名衝突是一個常見的問題。這時可以利用@JvmName 註解來解決這樣的狀況。@JvmName 註解非常實用,它可以讓你更靈活地控制在 JVM 平台上生成的 Kotlin 程式碼名稱。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
Lazy evaluation 的效益必須是在 pipe 的組合上有最佳化過的,若組合的不好反而更糟糕,且在 I/O 上幫助似乎也不大。parallel stream 要能發揮效果必須看資料的來源類型,不過要注意的是 parallel stream 也會使記憶體的使用量增加,使用上也要小心。
Thumbnail
老實說,看到 Java Sream API 讓我感到相當親切,這應該跟我研究所多年的研究題目是 visual dataflow language 有關,Java Stream API 把迴圈給內化了,每個 operation 的重點是要做什麼,大大提高了程式的抽象化程度和可讀性。
Thumbnail
最後,Java 8 雖然支援 Lambda,但我覺得 Closure 某種程度上還不稱不上是 Java 的第一級居民,我還是比較喜歡寫一些小而易測的 class,而不是使用 Lambda,至於捕捉變數,透過建構子將變數帶入物件也是一種方式。
Thumbnail
Java 8 終於在 2014 的 3 月 18 日正式釋出了,不過自從用 Objective C 開發 iOS App後,我已經有好一陣子沒碰 Java,期間曾經有短暫寫一點點,但卻沒有時間去用 beta 版的 Java 8,直到最近才又開始玩一下。
Thumbnail
在 Kotlin 程式語言中,屬性訪問 (Property Access ) 提供了一種簡潔的方式來存取 Java 類別中的公開屬性欄位,可以省去 getter 與 setter 呼叫方法。
Thumbnail
在 IntelliJ IDEA 建立 Kotlin 專案時,要執行 Java 程式只需將其檔案命名為 .java,並放置在專案的 java 目錄中。這樣就可以順利執行該 Java 程式。
Thumbnail
@Throws 是 Kotlin 中用來標記函數可能會拋出(throw)特定類型異常的註解。當你使用這個註解標記一個函數時,表示這個函數可能會丟出指定的異常類型。這有助於告訴其他開發者,在使用你的函式時要特別注意處理這類異常情況。 例如,我們常在讀取檔案或是解析 API 特定 Json 欄位資料,若
Thumbnail
Kotlin 的函式可以作為參數使用,它們被歸類為一種資料型別,稱為「Function Types」。當 Java 呼叫這種型別的 Kotlin 函式時,會使用 invoke 關鍵字進行呼叫。通過反編譯程式碼,可以得知 Kotlin 中的 Function Types 資訊。
Thumbnail
當你在 Kotlin 程式語言中定義一個有預設參數的函數功能,並給它預設值,@JvmOverloads 可以自動產生多個重載版本的 Java 方法,每個版本都省略了部分參數,讓 Java 代碼可以更簡潔地呼叫這些方法,而不需要填寫所有參數。不會因為沒有預設值,而顯示錯誤。
Thumbnail
在混合開發的 Java 和 Kotlin 項目中,函數命名衝突是一個常見的問題。這時可以利用@JvmName 註解來解決這樣的狀況。@JvmName 註解非常實用,它可以讓你更靈活地控制在 JVM 平台上生成的 Kotlin 程式碼名稱。