JAVASE基础知识(八)Arrays ---变参---多维数组

数组的优缺点

优点

  1. 数组能表示一个变量的集合,可以通过存储多个数据
  2. 随机访问元素效率高,通过下标问元素效率高 首地址+元素类型字节数+下标
    缺点
    1,插入元素,删除元素效率太低需要移动大量数据
    2,数组定长,不能在原有的基础上扩容
    3,数组只能保存一种数据类型
    4,数组请求内存必须是连续的,对内存要求相对较高
    5,数组没有提供任何的封装的方法,只提供一个属性,所有对元素的操作都需要自定义方法来实现
    6,通过内容查找数组元素效率不高,需要逐个比较
public class Test1 {
	//主函数
	public static void main(String[] args){
		int [] arr=getRandomArrays(5, 0, 21);
		printArrays(arr);
		int a=isExist(arr, 13);
		System.out.println(a);
		
		}
	//自定一个方法查看指定数组中是否存在指定值的方法
	public static int isExist(int [] array ,int value){
		for (int i = 0; i < array.length; i++) {
			if(value==array[i]){
				return i;
			}
		}
		return -1;
	}

Arrays 工具类

java .util.Arrays包含了大量的用于操作数组对象的方法(比如排序和搜索 )
常用的方法:

binarySearch(int [] a,int key);
sort();
copyOfRange();
equals();
public static void main(String[] args){
		int [] arr=getRandomArrays(15, 0, 21);
		printArrays(arr);
		//排序数组
		Arrays.sort(arr);
		printArrays(arr);
		
		//查找是否有指定的值
		int key =17;
		int index=Arrays.binarySearch(arr, key);
		System.out.println(index);
		
		//复制数组arr 前十个元素
		int[] newArray = Arrays.copyOf(arr, 10);
		printArrays(newArray);
		
		//System 类中提供了一种复制数组的方法。
		int [] arra=new int[20];
		System.arraycopy(arr, 5, arra, 1, 10);
		printArrays(arra);
		}

main 方法参数作用
可以用来接收解释执行的时候,从命令行窗口输入的若干个String 数据

变参练习

//jdk1.5 提供一种新的参数语法形式,可以接收任意个数量的实际参数。
//变参参数当作数组操作即可

多维数组

int [] arr:一维数组
int [][] arr :多维数组
二维数组初始化:
动态的:
int [][] arr =new int [3][5];
二维数组中:有3个一维数组;每个一维数组中有5个元素;

静态的:
int [][] arr =new int [][]{高纬度是4,低纬度是3;
{1,23,4},//23---- arr[0][1]
{1,23,4},
{1,23,4},
{1,23,4}
}

public class Test1 {
	//主函数
	public static void main(String[] args){
		//先指定高纬度
		int[][] arr=new int[3][];
		//对每个元素(一维数组)分配不同长度的空间
		arr[0]=new int[3];
		arr[1]=new int[4];
		arr[2]=new int[5];
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				System.out.print(arr[i][j]);
			}
		}
}

练习二维数组九九乘法表

public class Test1 {
	//主函数
	//使用二维数组保存九九乘法表的乘积结果
	public static void main(String[] args){
		final  int COUNT=9;
		//先创建9个一维数组
		int [][] arr=new int[COUNT][];
		//对9个一维数组逐个分配空间
		for (int i = 0; i < COUNT; i++) {
			arr[i]=new int[i+1];
		}
		//遍历二维数组的元素,并赋值,打印九九乘法 表
		for(int i=0;i<arr.length;i++){
			for (int j = 0; j <=i; j++) {
				//先把程序的结果放在数组中
				arr[i][j]=(j+1)*(i+1);
				System.out.print((j+1)+"*"+(i+1)+"="+arr[i][j]+"\t");
			}
			System.out.println();
		}
	}
发布了23 篇原创文章 · 获赞 4 · 访问量 379

猜你喜欢

转载自blog.csdn.net/weixin_44804206/article/details/105198040