Arrays工具类、二维数组

Arrays工具类、二维数组
1.Arrays工具类
2.可变参数
3.二维数组
1.1 二维数组的概念
1.2 二维数组的定义
1.3 数组的初始化
1.4 二维数组的访问

第一节 Arrays工具类

作用:主要用于对数组进行排序,查找,填充,比较等的操作
Arrays工具类存在于java.util包下,所以使用的第一步就是导包:import java.util.Arrays;

注意1:如果在同一个Java文件中同时使用Scanner和Arrays,则可以向如下方式导包:
	  import java.util.Scanner;
      import java.util.Arrays;

	  或者简写为:
      import java.util.*;

注意2:但凡是工具类,类中的方法全部是静态的,方便调用
	  调用语法:类名.方法名(实参列表)

代码实现:

//演示Arrays工具类的使用
import java.util.*;
class ArraysUsageDemo 
{
	public static void main(String[] args) 
	{
		//使用动态初始化的方式初始化一个数组
		int[] arr = new int[10];
		
		//1.填充
		/*
		static void fill(int[] a, int val) 
          将指定的 int 值分配给指定 int 型数组的每个元素。 
		static void fill(int[] a, int fromIndex, int toIndex, int val) 
          将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。 

		*/
		/*
		for(int n:arr) {
			System.out.print(n);
		}
		*/
		//Arrays.fill(arr,10);

		//Java但凡涉及到区间问题,一般规律:包头不包尾   前闭后开区间
		Arrays.fill(arr,2,6,56);//0~arr.length - 1


		//2.排序
		/*
		static void sort(int[] a) 
          对指定的 int 型数组按数字升序进行排序。 
		static void sort(int[] a, int fromIndex, int toIndex) 
          对指定 int 型数组的指定范围按数字升序进行排序。 
		*/
		//注意:默认情况下只能进行升序排序
		int[] arr1 = {43,2,65,1,45,9898,989};
		Arrays.sort(arr1);
		//Arrays.sort(arr1,2,5);//[2,5)

		//3.二分法查找
		//前提:必须是排好序的数组
		/*
		static int binarySearch(int[] a, int key) 
          使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。 
		static int binarySearch(int[] a, int fromIndex, int toIndex, int key) 
          使用二分搜索法来搜索指定的 int 型数组的范围,以获得指定的值。 
		*/
		/*
		1
		2
		43
		45
		65
		989
		9898
		*/
		int key = 45;
		int result1 = Arrays.binarySearch(arr1,key);
		System.out.println(result1);//3

		int result2 = Arrays.binarySearch(arr1,20);
		//规律:按照原来的顺序将待查找的元素插入到原数组中的下标,对下标加1然后求相反数
		System.out.println(result2);


		//4.拷贝
		/*
		static int[] copyOf(int[] original, int newLength) 
          复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。 
		static int[] copyOfRange(int[] original, int from, int to) 
          将指定数组的指定范围复制到一个新数组。 
		*/
		int[] newArr1 = Arrays.copyOf(arr1,3);

		int[] newArr2 = Arrays.copyOfRange(arr1,2,6);

		//5.将数组转换为字符串
		System.out.println(arr1);//[I@15db9742

		/*
		static String toString(int[] a) 
          返回指定数组内容的字符串表示形式。 
		*/
		System.out.println(Arrays.toString(arr1));//[1, 2, 43, 45, 65, 989, 9898]

		//6.比较数组
		/*
		static boolean equals(int[] a, int[] a2) 
          如果两个指定的 int 型数组彼此相等,则返回 true。 
		*/
		/*
		如果两个指定的 int 型数组彼此相等,则返回 true。
		如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。
		换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。
		此外,如果两个数组引用都为 null,则认为它们是相等的
		*/
		int[] array1 = {1,54,76};
		int[] array2 = {1,54,76};
		System.out.println(Arrays.equals(array1,array2));//true
		System.out.println(array1 == array2);//false

		/*
		总结:
		==和equals
		==:是一个运算符,可以比较基本数据类型和引用数据类型【当比较引用数据类型的时候,比较的地址值】
			比较String类型的变量,采用equals   
			String str1 = "";
			String str2 = "";
			比较方式:str1.equals(str2);
		equals:是一个方法,只能比较引用数据类型
		【补充:如果equals方法在一个类中没有没重新实现,则equals方法的作用和==一样,都比较的是地址值
		如果equals方法在一个类中被重新实现,则比较的是内容
		】
		*/

		for(int n:newArr1) {
			System.out.println(n);
		}
	}
}

第二节 可变参数

不定长参数

在设计方法时,方法的形参的个数是不确定的
语法
类型... 变量名称
例如:int... num

代码实现:

//演示不定长参数的使用
class PramaUsageDemo 
{
	public static void main(String[] args) 
	{
		int result = add(2,5,65,76,87,98,9);
		System.out.println(result);

		//2.对于一个方法的参数是不定长参数时,实参可以直接传一个数组
		int[] arr = {2,5,65,76,87,98,9};
		System.out.println(add(arr));//num = arr;

		text1(10,"hello",1,545,656);
		//text1(1,545,656,"hello");
	}

	//需求:计算不确定个整数的和
	public static int add(int... num) {
		//1.不定长的参数在进行使用的时候被当做数组来进行处理
		//num其实就相当于一个数组的引用变量
		int sum = 0;
		for(int n :num) {
			sum += n;
		}

		return sum;
	}

	//3.不定长参数在使用的时候,必须出现在参数列表的最后一个
	//4.在同一个参数列表中,不定长参数只能出现一次
	public static void text1(int num1,String s,int... num) {
	}
}

注意:
a.不定长的参数在进行使用的时候被当做数组来进行处理
b.不定长参数在使用的时候,必须出现在参数列表的最后一个
c.对于一个方法的参数是不定长参数时,实参可以直接传一个数组

第三节 二维数组

3.1 二维数组的概念

本质上还是一个一维数组,只是其数组元素又是一个一维数组
	
	举例说明:变量,一维数组,二维数组之间的关系
	吸烟:
	没钱 	 	1根		 一个变量
	稍微有钱  一包	   一维数组【20根】	
	有钱	    一条		二维数组【10包】

3.2 二维数组的定义

	方式一:元素类型[][] 数组名称;

	方式二:元素类型 数组名称[][];
	推荐使用方式一

3.3 数组的初始化

	静态初始化:

	语法:元素类型[][] 数组名称 = new 元素类型[][]{{一维数组1,一维数组2,一维数组3....};
	简化:元素类型[][] 数组名称 =m{{一维数组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个

3.4 二维数组的访问

通过下标访问指定元素

class TwiceArrayDemo01 
{
	public static void main(String[] args) 
	{
		int[][] arr = new int[3][4];

		System.out.println(arr);//[[I@15db9742
		System.out.println(arr.length);//3
		System.out.println(arr[0]);//[I@6d06d69c
		System.out.println(arr[0].length);//4
		System.out.println(Arrays.toString(arr));//[[I@6d06d69c, [I@7852e922, [I@4e25154f]
		System.out.println(Arrays.toString(arr[0]));//[0, 0, 0, 0]

		/*
		[[I@15db9742
		3
		[I@6d06d69c
		4
		[[I@6d06d69c, [I@7852e922, [I@4e25154f]
		[0, 0, 0, 0]
		*/
	}
}

遍历数组

//常见的操作:遍历二维数组
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);
			}
		}
	}
}

3.5 内存中的二维数组

画图分析:

第四节:调试技巧

使用eclipse的调试技巧,帮助开发人员理解程序执行过程。使用eclipse调试程序需要两个步骤:

  • 1添加断点:

  • 2单步执行:
    快捷键: F5单步进入
    F6单步跳过
    F8继续执行
    查看变量窗口、断点窗口

第五节:文档注释

java中注释

  • 单行注释://这里是单行注释

  • 多行注释:/*这里是多行注释,

                       可以多行/
    
  • JavaDoc注释:用来注释类、属性和方法等
    使用语法 /** …*/

  • JavaDoc常用标签

    标签 含义 标签 含义
    @author 标识一个类的作者,例如 @author wgy @version 指定类的版本
    @see 指定参考的链接或内容 @param 说明一个方法的参数
    @since 标记一个特定的变化时,@since jdk1.2 @return 说明返回值类型

    /**

    • 学校类
    • @author wgy
    • @version 2.0 2018/03/20
      /
      public class School {
      /
      * 学校名称 /
      String schoolName;
      //…
      /
      *
      • 招生方法
      • @return total
        */
        public void DrawStudent() {
        System.out.println(schoolName+“开始招生…”);
        }
        //…
        }

文档注释作用:

1.编写代码时可通过提示显示文档注释

2.JavaDoc能够从源代码中抽取类、属性、方法等的注释,形成一个配套的API帮助文档 。

 演示1:eclipse生成帮助文档。注意编码 -encoding utf-8 -charset utf-8

  演示2:javadoc -d doc -encoding utf-8 -charset utf-8 src\com\qf\day23_3\Person.java

总结

1 二维数组,实际上是由一维数组组成,一维数组的每个元素还是一个数组。

2 二维数组的声明、初始化、访问(通过下标访问,遍历)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值