Arrays工具類&二維數組&可變參數&方法參數

Arrays工具類

作用:主要用於對數組進行排序,查找,填充,比較等的操作
Arrays工具類存在於java.util包下,所以使用的第一步就是導包:import java.util.Arrays;
注意:如果在同一個Java文件中同時使用Scanner和Arrays,則可以向如下方式導包:
import java.util.Scanner;
import java.util.Arrays;
或者簡寫爲:* 所有的類
import java.util.*;

//演示Arrays工具類的使用
package com.qf.day07;

import java.util.Arrays;

/*
 * Arrays工具類的使用
 * 1 二分查找
 * 2 排序
 * 3 複製
 * 4 填充 
 * 5 把數組轉成字符串
 */

public class Demo1 {
	public static void main(String[] args) {
	//	binarySearch();
		//sort();
		//copy();
		//fill();
		toStr();
	}
	//binarySearch 二分查找
	public static void binarySearch() {
		int[] arr=new int[] {5,8,10,20,65,100};	
		int result=Arrays.binarySearch(arr,22);
		if(result>=0) {
			System.out.println("找到了");
		}else {
			System.out.println("沒找到 ");
		}
	}
	//排序
	public static void sort() {
		int[] arr=new int[] {12,8,100,2,9};
		Arrays.sort(arr);
		System.out.println("排序之後:");
		for(int i=0;i<arr.length;i++) {
			System.out.print(arr[i]+" ");	
		}	
	}
	//複製
	public static void copy() {
		int[] arr=new int[] {12,8,100,2,9};
		int[] arr2=Arrays.copyOf(arr, arr.length);
		for(int i=0;i<arr2.length;i++) {
			System.out.println(arr2[i]);
		}
	}
	//填充
	public static void fill() {
		int[] arr=new int[] {12,8,100,2,9};
		Arrays.fill(arr, 10);
		for(int i=0;i<arr.length;i++) {
			System.out.println(arr[i]);
		}
	}
	//把數組轉成字符串
	public static void toStr() {
		int[] arr=new int[] {12,8,100,2,9};
		String s=Arrays.toString(arr);
		System.out.println(s);
	}
	
}

二維數組

方式一:元素類型[][] 數組名稱;

方式二:元素類型 數組名稱[][];
推薦使用方式一

靜態初始化:

	語法:元素類型[][] 數組名稱 = new 元素類型[][]{{一維數組1,一維數組2,一維數組3....};
	簡化必須一條語句結束 :元素類型[][] 數組名稱 ={一維數組1,一維數組2,一維數組3....};

	舉例:int[][] arr = new int[][]{{2,3},{5,2,1},{10,45,22,54}};
	      int[][] arr = {{2,3},{5,2,1},{10,45,22,54}};

	動態初始化:

	語法:元素類型[][] 數組名稱 = new 元素類型[二維數組的長度][一維數組的長度]
	舉例:int[][] arr = new int[3][4];
	說明:定義一個數組arr,二維數組中一維數組的個數爲3個,每個一維數組中元素的個數爲4個
//常見的操作:遍歷二維數組
class TwiceArrayDemo02 
{
	public static void main(String[] args) 
	{
		//如果二維數組中一維數組的元素個數不確定
		//int[][] arr = new int[3][];

		int[][] arr = new int[][]{{2,3},{5,2,1},{10,45,22,54}};

		//遍歷arr
		for(int i = 0;i < arr.length;i++) {
			System.out.println(arr[i]);
		}

		//賦值:給arr中的第1個元素修改值
		arr[1] = new int[2];

		//給arr[0]中的第0個元素修改值
		arr[0][0] = 10;

		//遍歷arr[0]
		for(int i = 0;i < arr[0].length;i++) {
			System.out.println(arr[0][i]);
		}

		//二維數組的遍歷:嵌套for循環
		//簡單for循環
		for(int i = 0;i < arr.length;i++) {
			int[] subArr = arr[i];
			for(int j = 0;j < subArr.length;j++) {
				System.out.println(subArr[j]);
			}
		}

		//增強for循環
		for(int[] subArr1:arr) {
			for(int n:subArr1) {
				System.out.println(n);
			}
		}
	}
}

可變參數

在設計方法時,方法的形參的個數是不確定的
語法
類型… 變量名稱
例如:int… num
好處:不用創建數組,直接寫數組元素
注意:
a.不定長的參數在進行使用的時候被當做數組來進行處理
b.一個方法只能有一個可變參數
c. 可變參數只能方法參數列表最後

package com.qf.day07;
/*
 * 可變參數
 * int...
 * 好處:不用創建數組,直接寫數組元素
 * 注意事項:
 * 1 一個方法只能有一個可變參數
 * 2 可變參數只能方法參數列表最後
 */
public class Demo4 {
	public static void main(String[] args) {
		//調用
		//int[] nums= {10,4,8,20};
		//sort(nums);
		sort(10,4,8,20,1,2); //實際運行是,把這些數據變成數組
		
	}
	public static void sort(int a,int... arr) {
		for(int i=0;i<arr.length-1;i++) {
			for(int j=0;j<arr.length-i-1;j++) {
				if(arr[j]>arr[j+1]) {
					int temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			}
		}
	}
}

方法參數

基本類型作爲方法的參數

public class Demo2 {
	public static void main(String[] args) {
		int num1=10;
		int num2=20;
		swap(num1, num2);
		System.out.println(num1);
		System.out.println(num2);
	}
	public static void swap(int a,int b) {
		System.out.println("交換之前: a:"+a+" b:"+b);
		int temp=a;
		a=b;
		b=temp;
		System.out.println("交換之後: a:"+a+" b:"+b);
	}
	
}

引用類型作爲方法的參數

import java.util.Arrays;

/*
 * 方法的參數傳遞和返回值
 * 1 交換兩個數字
 * 2 實現數組排序
 * 
 */
public class Demo2 {
	public static void main(String[] args) {
		int[] nums=new int[] {15,8,3,9,20,50};
		sort(nums);
		//遍歷nums
		System.out.println("遍歷nums");
		for(int i=0;i<nums.length;i++) {
			System.out.print(nums[i]+" ");
		}
	}
	
	//2實現數組排序
	public static void sort(int[] arr) {
		//排序之前
		System.out.println("排序之前");
		System.out.println(Arrays.toString(arr));
		//冒泡
		for(int i=0;i<arr.length-1;i++) {
			for(int j=0;j<arr.length-i-1;j++) {
				if(arr[j]>arr[j+1]) {
					int temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			}
		}
		//排序之後
		System.out.println("排序之後");
		System.out.println(Arrays.toString(arr));
		
	}
}

基本類型作爲方法返回值

public class Demo3 {

	public static void main(String[] args) {
		int result=sum();
		System.out.println(result);
	}
	
	public static int sum() {
		//計算1-100的和
		int sum=0;
		for(int i=0;i<=100;i++) {
			sum+=i;
		}
		return sum;
	}
}

引用類型作爲方法返回值

package com.qf.day07;

import java.util.Arrays;

/*
 * 方法返回值
 * 1 基本類型作爲方法返回值
 * 2 引用類型作爲方法返回值
 */
public class Demo3 {

	public static void main(String[] args) {
		int[] nums2=getNums();
		for(int i=0;i<nums2.length;i++) {
			System.out.println(nums2[i]);
		}
	}

	//把數組中的每個數字加5,再返回一個數組
	public static int[] getNums() {
		int[] arr=new int[] {5,10,15};
		for(int i=0;i<arr.length;i++) {
			arr[i]=arr[i]+5;
		}
		return arr;
	}
}

總結: Java中的方法傳參採用的是傳值的方式。
1 基本類型傳遞的實際數據,對調用方沒有影響
2 引用類型傳遞的是地址,對調用方有影響
總結:方法的返回值如果是基本類型則返回實際數據,如果是引用類型則返回地址。
特殊:String類型傳值方法和返回值遵循基本類型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章