java数组类型的参数与排序

一、数组类型的参数?

在这里插入图片描述

方法调用时,将nums中的地址赋值给oneArray,此时二者指向同一个数组。

传递参数时:基本类型传递的是变量中的值;引用类型传递的是变量中的地址。

1.1数组类型的返回值

在这里插入图片描述

调用数组类型返回值的方法时,方法执行后,返回的是数组的地址。

二、可变长参数

2.1 可变长参数

概念:可接收多个同类型实参,个数不限,使用方式与数组相同。

语法:数据类型... 形参名 //必须定义在形参列表的最后,且只能有一个。

在这里插入图片描述

三、数组的排序【重点】

3.1 数组的排序

冒泡排序

冒泡排序:相邻的两个数值比较大小,互换位置。
/**
	 * 冒泡排序方法 给定一个参数 为int[] 数组
	 * 
	 * @param arrs
	 */
	public static void Bubbling(int[] arrs) {
		// 外层循环 控制 循环的次数
		for (int i = 0; i < arrs.length - 1; i++) {
			// 内层循环 控制数字两两对比的次数
			for (int j = 0; j < arrs.length - 1 - i; j++) {
//				两两对比数字的比较
				if (arrs[j] > arrs[j + 1]) {
					// 两个数字进行交换
					int tmpe = arrs[j];
					arrs[j] = arrs[j + 1];
					arrs[j + 1] = tmpe;
				}
			}
		}
		for (int i = 0; i < arrs.length; i++) {
			System.out.println(arrs[i]);
		}

	}

选择排序

 选择排序:固定值与其他值依次比较大小,互换位置
	/**
	 * 选择排序
	 * 
	 * @param arrs
	 */
	public static void arrs(int[] arrs) {
		// 外层控制循环次数
		for (int i = 0; i < arrs.length - 1; i++) {
			// 内层进行一一比较 先取一个最小值 arrs[i] 跟后面的一一比较
			for (int j = i + 1; j < arrs.length; j++) {
//				用arrs[i]跟后面 的数字一一比较
				if (arrs[i] > arrs[j]) {
					int temp = arrs[i];
					arrs[i] = arrs[j];
					arrs[j] = temp;
				}
			}
		}
		for (int i = 0; i < arrs.length; i++) {
			System.out.println(arrs[i]);
		}

	}

JDK排序:java.util.Arrays.sort(数组名)。

import java.util.Arrays;
public class TestSort{
	public static void main(String[] args){
		int[] nums = new int[]{4,3,5,2,1};
		//借助JDK提供的数组工具,进行排序
		Arrays.sort(nums);
		//第一次遍历(升序)
		for(int i = 0 ; i < nums.length ; i++){
			System.out.println(nums[i]);
		}
		//降序:需要手工的方式完成元素的倒置 5 2 3 4 1
		for(int i = 0 ; i < nums.length / 2 ; i++){// i = 0
			int temp = nums[i];// int temp = 1;
			nums[i] = nums[ nums.length - 1 - i];
			nums[ nums.length - 1 - i] = temp;
		}
		//第二次遍历(降序)
		for(int i = 0 ; i < nums.length ; i++){
			System.out.println(nums[i]);
				//两值交换,借助第三变量
				/*
				int a = 10;
				int b = 20;
				int c = a;//将a中的值保存在c中
				a = b;//将b中的值保存在a中
				b = c;//将c中的值保存在b中
				*/
		}

	}
}

四、 二维数组

4.1二维数组的概念

概念:一维数组中的一维数组;数组中的元素,还是数组。
简单去理解他:
二维数组实际上是一个一维数组,只是他的每个元素都是一维的数组

在这里插入图片描述

4.2 二维数组的赋值

在这里插入图片描述
使用双下标访问二维数组中的元素

第一个下标代表:行号(高维下标)。

第二个下标代表:列号(低维下标)。	

二维数组元素的默认初始化值

//针对于初始化方式一:比如:int[][] array = new int[4][3];
//外层元素的初始化值为:地址值
//内层元素的初始化值为:与一维数组初始化情况相同
//针对于初始化方式二:比如:int[][] array = new int[4][];
//外层元素的初始化值为:null
//内层元素的初始化值为:不能调用,否则报错。

4.3 二维数组的内存分配

在这里插入图片描述

高维数组中的每一个元素,保存了低维数组的地址。访问array[0]等价于在访问0x0000A111。

4.4 二维数组的访问

在这里插入图片描述

4.5 二维数组创建语法

先声明、再分配空间:

数据类型[][] 数组名;
数组名 = new 数据类型[高维长度][低维长度];

声明并分配空间:

数据类型[][] 数组名 = new 数据类型[高维长度][低维长度];

声明并赋值(繁)

数据类型[][] 数组名 = new 数据类型[高维长度][]; (不规则数组,自行new低维数

组)。
声明并赋值(简):

数据类型[][] 数组名 = { {v1,v2,v3},{v4,v5},{v6,v7,v8,v9} }; (显示初始化)。
public class Test2DArray2{
	public static void main(String[] args){
		int[][] array = new int[3][]; //只有高维空间,没有低维空间
		array[0] = new int[5];
		array[1] = new int[3];
		array[2] = new int[7];
		System.out.println(array[0]);
		System.out.println(array[1]);
		System.out.println(array[2]);
		System.out.println(array[0].length);
		System.out.println(array[1].length);
		System.out.println(array[2].length);
		for(int i = 0 ; i < array.length ; i++){
			for(int j = 0 ; j < array[i].length ; j++){
				System.out.print(array[i][j] +"\t");
			}
			System.out.println();
		}
		//显示初始化
		int[][] numbers = { {1,2,3} , {4,5,6,7} , {8,9} };
		System.out.println(numbers.length);
		System.out.println("--------------");
		System.out.println(numbers[0].length);
		System.out.println(numbers[1].length);
		System.out.println(numbers[2].length);
}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值