摘要:案例不帶可變參數列表的方法被調用帶可變參數列表的方法被調用和為可變參數列表和數組同時作為方法參數
Lecture1 方法簡介
方法:所謂方法,就是用來解決一類問題的代碼的有序組合,是一個功能模塊
方法在類的內部定義,不能嵌套定義(即不能定義在另一個方法里)
方法的聲明:語法格式
訪問修飾符 返回類型 方法名(參數列表){ 方法體; }
方法分類:
無參無返回值
無參帶返回值
帶參無返回值
帶參帶返回值
Lecture2 方法類型無參無返回值方法案例:
/** * 使用方法進行星號打印 */ public class MethodDemo { //打印輸出星號 public void printStar() { System.out.println("**********************"); } public static void main(String[] args) { //創建MethodDemo類的對象methodDemo MethodDemo methodDemo = new MethodDemo(); //使用對象名.方法名()調用方法 methodDemo.printStar(); System.out.println("歡迎來到Java的世界"); methodDemo.printStar(); } }
無參帶返回值方法案例:
/** * 使用方法計算矩形面積 */ public class RectangleArea { //求矩形面積的方法 public int area() { int length = 10; int width = 5; int calArea = length * width; return calArea;//返回語句返回面積 } public static void main(String[] args) { RectangleArea rectangleArea = new RectangleArea(); System.out.println("矩形的面積為:" + rectangleArea.area()); } }
帶參無返回值方法案例:
/** * 使用方法求兩個float類型數據的最大值,并在方法中將最大值輸出 */ public class MaxDemo { //求最大值的方法 public void max(float a, float b) { float max; if (a > b) { max = a; } else { max = b; } System.out.println("最大值是:" + max); } public static void main(String[] args) { MaxDemo maxDemo = new MaxDemo(); float m = 2.1f, n = 3.7f; maxDemo.max(m, n); } }
帶參帶返回值方法案例:
/** * 定義一個求n!的方法 * 然后計算1!+2!+3!+4!+5! */ public class FacDemo { //求n!的階乘 public int fac(int n){ int s = 1; for(int i = 1; i <= n; i++){ s *= i; } return s; } public static void main(String[] args) { FacDemo facDemo = new FacDemo(); //求1!+2!+3!+4!+5! int sum = 0; for(int i = 1; i <= 5; i++){ sum += facDemo.fac(i); } System.out.println("階乘結果為:"+sum); } }Lecture3 數組作為方法參數
數組作為方法參數案例一:
/** * 使用方法打印輸出數組的元素 */ public class ArrayMethod { //輸出數組元素的方法 public void printArray(int[] arr) { for (int n : arr) { System.out.print(n + " "); } System.out.println();//格式調整 } public static void main(String[] args) { ArrayMethod arrayMethod = new ArrayMethod(); int[] array = {10, 20, 30, 40, 50}; arrayMethod.printArray(array); } }
數組作為方法參數案例二:
import java.util.Scanner; /** * 使用方法查找數組元素的值 */ public class ArraySearch { //查找數組元素值的方法 public boolean search(int n, int[] arr) { boolean flag = false;//默認沒找到 for (int m : arr) { if (m == n) { flag = true; break;//使用break語句提高程序的效率 } } return flag; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); ArraySearch arraySearch = new ArraySearch(); int[] array = {1, 2, 3, 4, 5}; System.out.println("請輸入要查詢的值:"); int n = sc.nextInt(); boolean flag = arraySearch.search(n, array); if (flag) { System.out.println("找到了"); } else { System.out.println("沒找到"); } } }Lecture4 方法重載
方法重載:方法名相同,參數列表不同
方法重載案例:
/** * 定義三個方法,實現int、double和數組類型和的問題 */ public class MathDemo { //求兩個int類型數的和 public int plus(int a, int b) { return a + b; } //求兩個double類型的數的和 public double plus(double a, double b) { return a + b; } //求數組元素的累加和 public int plus(int[] arr) { int sum = 0; for (int n : arr) { sum += n; } return sum; } public static void main(String[] args) { int m = 5, n = 10; int[] array = {1, 2, 3, 4, 5, 6}; MathDemo mathDemo = new MathDemo(); System.out.println("int類型的和:" + mathDemo.plus(m, n)); System.out.println("double類型的和:" + mathDemo.plus(m, n)); System.out.println("數組元素的累加和:" + mathDemo.plus(array)); } }Lecture5 方法傳值
基本數據類型的傳值:基本數據類型傳值,形式參數的改變對實際參數沒有影響(傳遞的是值)
案例一:
public class ExchangeDemo1 { //定義交換方法 public void swap(int a, int b) { int temp; System.out.println("交換前: a = " + a + ", b = " + b); temp = a; a = b; b = temp; System.out.println("交換后: a = " + a + ", b = " + b); } public static void main(String[] args) { int m = 4, n = 5; ExchangeDemo1 swapDemo = new ExchangeDemo1(); System.out.println("交換前: m = " + m + ", n = " + n); swapDemo.swap(m, n); System.out.println("交換后: m = " + m + ", n = " + n); }
案例二:
public class ExchangeDemo2 { public void add(int n) { n++; System.out.println("方法中n的值:" + n); } public static void main(String[] args) { int n = 10; System.out.println("方法調用前n的值:" + n); ExchangeDemo2 exchangeDemo2 = new ExchangeDemo2(); exchangeDemo2.add(n); System.out.println("方法調用后n的值:" + n); } }
數組的傳值:數組類型傳值,形式參數的改變對實際參數有影響(傳遞的是地址 -- 數組第一個元素的地址)
public class ArrayDemo { //定義一個用于修改數組某個元素值的方法 public void update(int[] arr) { arr[3] = 15; System.out.println("修改后數組arr的元素為:"); for (int n : arr) { System.out.print(n + " "); } System.out.println(); } public static void main(String[] args) { ArrayDemo arrayDemo = new ArrayDemo(); int[] array = {1, 2, 3, 4, 5}; System.out.println("方法調用前數組array的元素為;"); for (int n : array) { System.out.print(n + " "); } System.out.println(); arrayDemo.update(array); System.out.println("方法調用后數組array的元素為;"); for (int n : array) { System.out.print(n + " "); } System.out.println(); } }Lecture6 可變參數列表
可變參數列表:又稱為可變元參數或者可變參數類型
案例一:
public class ArgsDemo1 { //求和 public void sum(int... n) { int sum = 0; for (int i : n) { sum += i; } System.out.println("sum = " + sum); } public static void main(String[] args) { ArgsDemo1 argsDemo = new ArgsDemo1(); argsDemo.sum(1); argsDemo.sum(1, 2); argsDemo.sum(1, 2, 3); } }
案例二:參數列表中如果有兩個以上的參數,可變參數一定是在最后;可以將數組傳遞給可變參數列表,但是數組作為參數時,是不能將多個值傳遞給數組的
public class ArgsDemo2 { //查找 public void search(int n, int... a) { boolean flag = false; for (int i : a) { if (i == n) { flag = true; break; } } if (flag) { System.out.println("找到了"); } else { System.out.println("沒找到"); } } public static void main(String[] args) { ArgsDemo2 argsDemo2 = new ArgsDemo2(); argsDemo2.search(3, 1, 2, 3, 4, 5); int[] a = {4, 5, 6, 7, 8}; argsDemo2.search(3, a); } }
Tips:若此時定義另一個search方法 -- public void search(int n, int[] array),并不是方法重載而是重復定義
可變參數列表作為方法參數的重載問題:可變參數列表所在的方法是最后被訪問的;可變參數列表和數組可以同時作為方法參數。
案例:
public class ArgsDemo3 { public int plus(int a, int b) { System.out.println("不帶可變參數列表的方法被調用"); return a + b; } public int plus(int... a) { int sum = 0; for (int i : a) { sum += i; } System.out.println("帶可變參數列表的方法被調用"); return sum; } public int plus(int[] arr, int... a) { int sum1 = 0, sum2 = 0; for (int i : arr) { sum1 += i; } for (int i : a) { sum2 += i; } return sum1 + sum2; } public static void main(String[] args) { ArgsDemo3 argsDemo3 = new ArgsDemo3(); System.out.println("和為:" + argsDemo3.plus(1, 2)); int[] arr = {1, 2, 3}; System.out.println("可變參數列表和數組同時作為方法參數" + argsDemo3.plus(arr, 1, 2, 3, 4)); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68524.html
摘要:相比它支持存儲的類型相對更多字符哈希集合有序集合列表,同時是線程安全的。基于的連接實例,可以在多個線程間并發訪問,且線程安全,滿足多線程環境下的并發訪問,同時它是可伸縮的設計,一個連接實例不夠的情況也可以按需增加連接實例。 SpringBoot 是為了簡化 Spring 應用的創建、運行、調試、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML...
摘要:一般差異簡單來說,是一個用于線程同步的實例方法。暫停當前線程,不釋放任何鎖。用來線程間通信,使擁有該對象鎖的線程等待直到指定時間或。執行對該對象加的同步代碼塊。 在JAVA的學習中,不少人會把sleep和wait搞混,認為都是做線程的等待,下面主要介紹下這倆者是什么,及了解它們之間的差異和相似之處。 一般差異 簡單來說,wait()是一個用于線程同步的實例方法。因為定義在java.l...
摘要:很多網站都有登錄功能,對于的應用我們怎么實現權限的控制呢本篇將為你演示一個最常用的權限控制例子用戶登錄。升級后使用的版本是。修改這兩個文件后執行命令升級。到目前為止我們還沒使用過任何有關插件的內容。目前官方提供了三種常用的驗證器。 很多網站都有登錄功能,對于Ember的應用我們怎么實現權限的控制呢?本篇將為你演示一個最常用的權限控制例子:用戶登錄。 要實現登錄最常用的方式是通過判斷se...
摘要:適配器是將接口轉換為不同接口,而外觀模式是提供一個統一的接口來簡化接口。 外觀模式(Facade Pattern)屬于結構型模式的一種,為子系統中的一組接口提供一個統一的入口,它通過引入一個外觀角色來簡化客戶端與子系統之間的交互... 概述 外觀模式是一種使用頻率非常高的結構型設計模式,當你要為一個復雜子系統提供一個簡單接口時。子系統往往因為不斷演化而變得越來越復雜。大多數模式使用時...
閱讀 2742·2021-11-24 10:23
閱讀 1153·2021-11-17 09:33
閱讀 2503·2021-09-28 09:41
閱讀 1409·2021-09-22 15:55
閱讀 3641·2019-08-29 16:32
閱讀 1903·2019-08-29 16:25
閱讀 1056·2019-08-29 11:06
閱讀 3421·2019-08-29 10:55