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类型传值方法和返回值遵循基本类型。

猜你喜欢

转载自blog.csdn.net/l1996729/article/details/106568900
今日推荐