formdata传参java用对象怎么接受_Java基础4
Java方法詳解
何謂方法
方法的定義及調用
方法的重載
命令行傳參
可變參數
遞歸
何謂方法?
System.out.println(),那么它是什么呢?
//System"類".out“輸出對象”.println()“方法”1Java方法是語句的集合,它們在一起執行一個功能。
方法是解決一類問題的步驟的有序組合
方法包含于類或對象中
方法在程序中被創建,在其他地方被引用
設計方法的原則:方法的本意是功能塊,就是實現某個功能的語句塊的集合。我們設計方法的時候,最好保持方法的原子性,就是一個方法只完成1個功能,這樣利于我們后期的擴展。
maim盡量干凈簡潔,把公共模塊提取到外面,利用方法調用。
回顧:方法的命名規則?
加法練習:
public static void/*代表空類型*/ main(String[] args) { ? ?//實際參數,實際調用傳輸給他的參數 ? int sum = add(1,2); ? ?System.out.println(sum);}//形式參數,用來定義作用的public static int/*返回類型*/ add(int a,int b){ ? ?return a+b;//返回值}12345678
方法的定義
Java的方法類似于其它語言的函數,是==一段用于完成特定功能的代碼片段,==一般情況下,定義一個方法包含以下語法
==方法包含一個方法頭和一個方法體。==下面是一個方法的所有部分:
修飾符 返回值類型 方法名(參數類型 參數名){ ? ... ? ?方法體 ? ... ? ?return 返回值; ? ?}123456return
? ?public static void main(String[] args){ ? ? ? ? ? ? max(20,20); ? } ? ?public static int max(int num1, int num2){ ? ? ? ?int result = 0; ? ? ? ?if (num1==num2){ ? ? ? ? ? ?System.out.println("數據相等"); ? ? ? ? ? ?return 0; ? ? ? } ? ? ? ?if (num1>num2){ ? ? ? ? ? ?result = num1; ? ? ? ? ? ?System.out.println(result); ? ? ? } ? ? ? ?if (num2>num1){ ? ? ? ? ? ?result = num2; ? ? ? ? ? ?System.out.println(result); ? ? ? }return result; ? }123456789101112131415161718形式參數:在方法被調用時用于接收外界輸入的數據。
實參:調用方法時實際傳給方法的數據。
修飾符:修飾符,這是可以選的,告訴編譯器如何調用該方法。定義了該方法的訪問類型。
返回值類型:方法可能會返回值,returnValueType 是方法返回值的數據類型,有些方法執行所需的操作,但沒有返回值。在這種情況下,returnValueType 是關鍵字void。
方法名:是方法的實際名稱。方法名和參數表共同構成方法簽名。
參數類型:參數像是一個占位符。當方法被調用時,傳遞值給參數。這個值被稱為實參或變量。參數列表是指方法的參數類型、順序和參數的個數。參數是可選的,方法可以不包含任何參數。
方法體:方法體包含具體的語句,定義該方法的功能。
方法調用
調用方法:對象名.方法名(實參列表)
Java 支持兩種調用方法的方式,根據方法是否返回值來選擇。
當方法返回一個值的時候,方法調用通常被當做一個值。例如:
int larger = max(30,40);1如果方法返回值是 void ,方法調用一定是一條語句。
System.out.println("Hello,kuangshen!");1課后拓展了解:值傳遞(Java)和引用傳遞。
值傳遞:使用兩個不同的存儲單元,執行中,形式參數值改變不會影響實際參數值。
引用傳遞:實際為引用地址,實際參數和形式參數指向同一地址,執行中形式參數會影響實際參數。
方法的重載
重載就是在一個類中,有相同的函數名稱,但形參不同的函數。
方法重載的規則:
方法名稱必須相同。
參數列表必須不同(個數不同、或類型不同、參數排列順序不同等)。
方法的返回類型可以相同也可以不相同。
僅僅返回類型不同不足以成為方法的重載。
實現理論:
方法名稱相同時,編譯器會根據調用方法的參數個數,參數類型等去逐個匹配,以選擇對應的方法,如果匹配失敗,則編譯器報錯。
? ?public static void main(String[] args) { ? ? ? ? max(11,11,11); ? } ? ?//二整數比大小 ? ?public static int max(int max1,int max2){ ? ? ? ?int result = 0; ? ? ? ?if (max1==max2){ ? ? ? ? ? ?System.out.println("兩值相等"); ? ? ? ? ? ?return ?0; ? ? ? }if (max1>max2){ ? ? ? ? ? ?result = max1; ? ? ? ? ? ?System.out.println(result); ? ? ? }if (max2>max1){ ? ? ? ? ? ?result = max2; ? ? ? ? ? ?System.out.println(result); ? ? ? }return result; ? } ? ?//二小數比大小 ? ?public static double max(double max1,double max2){ ? ? ? ?double result = 0; ? ? ? ?if (max1==max2){ ? ? ? ? ? ?System.out.println("兩值相等"); ? ? ? ? ? ?return ?0; ? ? ? }if (max1>max2){ ? ? ? ? ? ?result = max1; ? ? ? ? ? ?System.out.println(result); ? ? ? }if (max2>max1){ ? ? ? ? ? ?result = max2; ? ? ? ? ? ?System.out.println(result); ? ? ? }return result; ? } ? ?//三小數比大小 ? ?public static double max(double max1,double max2,double max3){ ? ? ? ?double result = 0; ? ? ? ?if (max1==max2 && max2==max3){ ? ? ? ? ? ?System.out.println("兩值相等"); ? ? ? ? ? ?return 0; ? ? ? }if (max1>max2 && max1>=max3){ ? ? ? ? ? ? ? ?result = max1; ? ? ? ? ? ? ? ?System.out.println(result); ? ? ? ? ? } ? ? ? ?else if (max1>max3 && max1>=max2){ ? ? ? ? ? ?result = max1; ? ? ? ? ? ?System.out.println(result); ? ? ? } ? ? ? ?else if (max2>max1 && max2>=max3){ ? ? ? ? ? ?result = max2; ? ? ? ? ? ?System.out.println(result); ? ? ? }else if (max2>max3 && max2>=max1){ ? ? ? ? ? ?result = max2; ? ? ? ? ? ?System.out.println(result); ? ? ? }else if (max3>max1 && max3>=max2){ ? ? ? ? ? ?result = max3; ? ? ? ? ? ?System.out.println(result); ? ? ? }else if (max3>max2 && max3>=max1){ ? ? ? ? ? ?result = max3; ? ? ? ? ? ?System.out.println(result); ? ? ? }return result; ? }1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
命令行傳參
有時候你希望運行一個程序時候再傳遞給他消息。這要靠傳遞命令行參數給main()函數實現。
public static void main(String args[]){ ? ?for(int i=0;i<args.length;i++){ ? ? ? ?System.out.println("args["+i+"]:"+agrs[i]) ? }}12345
可變參數
JDK 1.5 開始,Java支持傳遞同類型的可變參數給一個方法。
在方法聲明中,在指定參數類型后加一個省略號(…)。
一個方法中只能指定一個可變參數,它必須是方法的最后一個參數。任何普通的參數必須在它之前聲明。
? ?public static void main(String[] args) { ? ? ? ?printMax(34,3,3,2,56.5); ? ? ? ?printMax(new double[]{1,2,3}); ? } ? ?public static void printMax( double... numbers){ ? ? ? ?if (numbers.length ==0){ ? ? ? ? ? ?System.out.println("No argument passed"); ? ? ? ? ? ?return; ? ? ? } ? ? ? ?double result = numbers[0]; ? ? ? ?for (int i = 1; i < numbers.length;i++){ ? ? ? ? ? ?if (numbers[i] > result){ ? ? ? ? ? ? ? ?result = numbers[i]; ? ? ? ? ? } ? ? ? } ? ? ? ?System.out.println("The max value is " + result); ? }1234567891011121314151617
遞歸
A 方法調用 B 方法,我們很容易理解!
遞歸就是:A 方法調用 A 方法!就是自己調用自己
利用遞歸可以用簡單的程序來解決一些復雜的問題。它通常把一個大型復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程序就可貌似出解決過程所需要的多次重復計算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語句來定義對象的無限集合。
遞歸結構包括兩個部分:
遞歸頭:什么時候不調用自身方法。如果沒有頭,將陷入死循環。
遞歸體:什么時候需要調用自身方法。
遞歸適合小計算,如果太大量計算容易內存崩潰,死機。
? ?public static void main(String[] args){ ? ? ? ?System.out.println(f(5)); ? } ? ?public static int f(int n){ ? ? ? ?if (n==1){ ? ? ? ? ? ?return 1; ? ? ? }else { ? ? ? ? ? ?return n*f(n-1); ? ? ? } ? }12345678910
數組
數組概述
數組聲明創建
數組使用
多維數組
Arrays 類
稀疏數組
數組的定義
數組是相同類型數據的有序集合。
數組描述的是相同類型的若干個數據,按照一定的先后次序排列組合而成。
其中,每一個數據稱作一個數組元素,每個數組元素可以通過一個下標來訪問它們。
數組聲明創建
首先必須聲明數組變量,才能在程序中使用數組。下面是聲明數組變量的語法:
dataType[] arrayRefVar; ?// 首選的方法或dataType arrayRefVar[]; // 效果相同,但不是首選方法 ?123Java 語言使用 new 操作符來創建數組,語法如下:
ataType[] arrayRefVar = new dataType[arraySize];1數組的元素是通過索引訪問的,數組索引從0開始
獲取數組長度:
arrays.length1
練習
? ?public static void main(String[] args){ ? ? ? ?int[] nums; //1.首選聲明一哥數組 ? ? ? ?nums = new int[10]; //2.創建一哥數組 ? ? ? ?//3.給數組元素中賦值 ? ? ? ?nums[0] = 1; ? ? ? ?nums[1] = 2; ? ? ? ?nums[2] = 3; ? ? ? ?nums[3] = 4; ? ? ? ?nums[4] = 5; ? ? ? ?nums[5] = 6; ? ? ? ?nums[6] = 7; ? ? ? ?nums[7] = 8; ? ? ? ?nums[8] = 9; ? ? ? ?nums[9] = 10; ? ? ? ?//計算所有元素的和 ? ? ? ?int sum = 0; ? ? ? ?//獲取數組長度:arrays.length ? ? ? ?for (int i = 0; i < nums.length ; i++){ ? ? ? ? ? ?sum = sum + nums[i]; ? ? ? } ? ? ? ?System.out.println("總和:"+sum); ? }12345678910111213141516171819202122內存分析
Java內存分析:
三種初始化
靜態初始化
//靜態初始化:創建 + 賦值int[] a = {1,2,3};Man[] mans = {new Man(1,1),new Man(2,2)};123動態初始化
//動態初始化:包含默認初始化,未賦值前為0。int[] a = new int[2];a[0] = 1; a[1] = 2;1234數組的默認初始化
數組是引用類型,它的元素相當于類的實例變量,因此數組一經分配空間,其中的每個元素也被按照實例變量同樣的方法被隱式初始化。
數組的四個基本特點
其長度是確定的。數組一旦被創建,它的大小就是不可以改變的。
其元素必須是相同類型,不允許出現混合類型。
數組中的元素可以是任何數據類型,包括基本類型和引用類型。
數組變量屬引用類型,數組也可以看成是對象,數組中的每個元素相當于該對象的成員變量。
數組本身就是對象,Java中對象是在堆中的,因此數組無論保存原始類型還是其他對象類型,
數組對象本身是在堆中的。
數組邊界
下標的合法區間:[0,length-1],如果越界就會報錯;
public static void main(String[] args){ ? ?int[] a=new int[2]; ?//a長度為2,下標表示為a[0],a[1]. ? ?System.out.println(a[2]);//a[2]以超出設定值}1234ArraylndexOutOfBoundsException:數組下標越界異常!
小結:
數組是相同數據類型(數據類型可以為任意類型)的有序集合
數組也是對象。數組元素相當于對象的成員變量
數組長度的確定的,不可變的。如果越界,則報:ArrayindexOutofBounds
數組的使用
普通的For循環
For-Each 循環
數組作方法入參
數組作返回值
練習:
? ?public static void main(String[] args) { ? ? ? ?int[] arrays = {11,12,13,14,15}; ? ? ? ?//打印全部的數組元素 ? ? ? ?for (int i = 0 ; i<arrays.length ; i++){ ? ? ? ? ? ?System.out.println(arrays[i]); ? ? ? } ? ? ? ?System.out.println("===================="); ? ? ? ?//打印數組元素之和 ? ? ? ?int sum = 0; ? ? ? ?for (int i = 0; i < arrays.length; i++) { ? ? ? ? ? ?sum = sum +arrays[i]; ? ? ? } ? ? ? ?System.out.println("sum="+sum); ? ? ? ?System.out.println("================="); ? ? ? ?//查找數組內最大元素 ? ? ? ?int max = arrays[0] ; ? ? ? ?for (int i = 1; i < arrays.length; i++) { ? ? ? ? ? ?if (max < arrays[i]){ ? ? ? ? ? ? ? ?max = arrays[i]; ? ? ? ? ? } ? ? ? } ? ? ? ?System.out.println("max="+max); ? }1234567891011121314151617181920212223public static void main(String[] args) { ? ?int[] arrays ={1,2,3,4,5}; ? ?//JDK1.5 沒有下標 ? ?for (int array : arrays) { ? ? ? ?System.out.print(array+" "); ? } ? ?System.out.println(); ? ?System.out.println("打印數組"); ? ?printArray(arrays); ? ?System.out.println("反轉數組:"); ? ?int[] reverse= reverse(arrays); ? ?printArray(reverse);}//反轉數組public static int[] reverse(int[] arrays){ ? ?int[] reverse =new int[arrays.length]; ? ?for (int i = 0, j=reverse.length-1; i <arrays.length; i++,j--) { ? ? ? ?reverse[j] = arrays[i]; ? } ? ?return reverse;}//打印數組元素public static void printArray(int[] arrays){ ? ?for (int i = 0; i <arrays.length ; i++) { ? ? ? ?System.out.println(arrays[i]+" "); ? }}1234567891011121314151617181920212223242526272829
多維數組
多維數組可以看成是數組的數組,比如二維數組就是一個特殊的一維數組,其每一個元素都是一個一維數組。
二維數組
int a[][] =new int[2][5];1解析:以上二維數組 a 可以看成一個兩行五列的數組。
思考:多維數組的使用?
num[1][0];1練習
public static void main(String[] args) { ? ?int[][] array = {{1,2},{2,3},{3,4},{4,5}}; ? ?for (int i = 0; i <array.length ; i++) { ? ? ? ?for (int j = 0; j <array[i].length ; j++) { ? ? ? ? ? ?System.out.print(array[i][j]+" "); ? ? ? } ? }}12345678
Arrays 類
數組的工具類java.uti.Arrays
由于數組對象本身并沒有什么方法可以供我們調用,但是 API 中提供了一個工具類 Arrays 供我們使用,從而可以對數據對象進行一些基本的操作。
查看 JDK 幫助文檔
Arrays 類中的方法都是 static 修飾的靜態方法,在使用的時候可以直接使用類名進行調用,而“不用”使用對象來調用(注意:是“不用”而不是“不能”)
具有以下常用功能:
? ?public static void main(String[] args) { ? ? ? ?int[] a = {3,54,8,2,9,6,57,12,87}; ? ? ? ? //打印數組元素,Arrays.toString ? ? ? ?System.out.println(Arrays.toString(a)); ? ? ? ? //數組排序操作 ? ? ? ?Arrays.sort(a); ? ? ? ?System.out.println(Arrays.toString(a)); ? ? ? ?//數組填充 ? ? ? ?Arrays.fill(a,7); ? ? ? ?System.out.println(Arrays.toString(a)); ? ? ? ?//選擇填充 ? ? ? ?Arrays.fill(a,2,6,0); ? ? ? ?System.out.println(Arrays.toString(a)); }1234567891011121314給數組賦值:通過 fill 方法。
對數組排序:通過 sort 方法,按升序。
比較數據:通過 equals 方法比較數組中元素值是否相等。
查找數組元素:通過 binarySearch 方法能對排序好的數組進行二分查找法操作。
冒泡排序
冒泡排序無疑是最為出名的排序算法之一,總共有八大排序!
冒泡的代碼還是相當簡單的,兩層循環,外層冒泡輪數,里層依次比較,江湖中人人盡皆知。
我們看到嵌套循環,應該立馬就可以得出這個算法的時間復雜度為o(n2)。
稀疏數組
需求:編寫五子棋游戲中,有存盤退出或續上盤的功能。
分析問題:因為該二維數組的很多值是默認值0,因此記錄了很多沒有意義的數據。
解決:稀疏數組
稀疏數組介紹
當一個數組中大部分元素為0,或者為同一值得數組時,可以使用稀疏數組來保存該數組。
稀疏數組的處理方式是:
記錄數組一共有幾行幾列,有多少個不同值。
把具有不同值的元素和行列及值記錄在一個小規模的數組中,從而縮小程序的規模
? ? ? 最后依舊是關注薪苼,獲得更多的Java知識。
總結
以上是生活随笔為你收集整理的formdata传参java用对象怎么接受_Java基础4的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 谁是小偷? 嫌疑人A、B、
- 下一篇: 太原未来小使者英语大赛_哥伦比亚2020