Java(5)数组

Java数组

数组是Java重要数据结构之一,和类一样,数组也是引用数据类型,数组是用来存储固定大小的同类型元素。

声明和创建数组

声明数组:

dataType[] arrayRefVar; 

//如:double[] myList; 

创建数组:

arrayRefVar = new dataType[arraySize];
//如:myList = new double[10];

arrayRefVar = {value0, value1, ..., valuek};
//如:mylist={1,2,4,5,3,1}

同时声明创建数组:

  • 使用方法:
dataType[] arrayRefVar = new dataType[arraySize];

dataType[] arrayRefVar = {value0, value1, ..., valuek};

//dateType: 要创建的数组的元素类型

//arrayRefVar :数组名称

//arraySize:数组存储大小
  • 案例
// 数组大小

int size = 5;

// 定义数组

double[] myList = new double[size];

myList[0] = 5.6;

myList[1] = 4.5;

遍历数组

使用基本循环:

for (int i = 0; i < myList.length; i++) {
	System.out.println(myList[i] + " ");
}

使用For-Each循环:

  • 语法格式如下:
for(type element: array){
	System.out.println(element);
}
//type:数组元素类型
//array:数组名称
  • 案例:
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 打印所有数组元素
for (double element: myList) {
	System.out.println(element);
}

多维数组

多维数组可看成数组的数组,创建方法与一维差不多,如:

String str[][] = new String[3][4]
int a[][] = new int[2][3] //二维数组a可看成一个两行三列的数组

多维数组的动态初始化:

String s[][] = new String[2][];

s[0] = new String[2];

s[1] = new String[3];

s[0][0] = new String("Good");

s[0][1] = new String("Luck");

s[1][0] = new String("to");

s[1][1] = new String("you");

s[1][2] = new String("!");

/*
s[0]=new String[2] 和 s[1]=new String[3] 是为最高维分配引用空间,也就是为最高维限制其能保存数据的最长的长度,然后再为其每个数组元素单独分配空间s0=new String("Good")等操作。
*/ 

java.util.Arrays 类

import java.util.Arrays;

Arrays 类能方便地操作数组,它提供的所有方法都是静态的, Ctrl+鼠标左键可以快速查看各个方法的源码

  • Arrays类的方法:
Arrays.toString(a);//将数组a以字符串形式输出,用该方法才能输出数组的值

Arrays.deepToString(a);//将多维数组的内容以字符串形式输出

Arrays.fill(a,from,to,int var)//给数组赋值
int [] a=new int[6];
Arrays.fill(a, 2);
System.out.println(Arrays.toString(a));
Arrays.fill(a, 2,4,8);
System.out.println(Arrays.toString(a));
//a为数组名称,from,to为索引范围,var为要替换的值

Arrays.equals(); //判断数组元素是否一一对应相等
Arrays.equals(a,b); //判断a,b两个数组元素是否一致
Arrays.sort(); 
//对数组排序,原数组会被修改成为排过序的新数组
//--------------------------------------------------
//对数组进行排序,使用冒泡排序法:
int[] ns={34,2,4,6,3,23,2,3,23,3,5,24};
for (int i =0;i<ns.length;j++){
	for(int j=i+1;j<ns.length;j++){
    	if(ns[i]>ns[j]){
    	int timp=ns[j]; 
		//交换两个变量的值必须通过临时变量
    	ns[j]=ns[i];   
    	ns[i]=tmp;
		}
	}
}
Arrays.binarySearch(a,key);// a: 要搜索的数组,key:要搜索的值
//用二分查找算法(从数组中间开始查找)在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。

/*
返回值:如果key在数组中,则返回搜索值的第一个索引;否则返回-1或“-”(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素的索引。
技巧:
[1] 搜索值不是数组元素,且在数组范围内,从1开始计数,得“ - 插入点索引值”;
[2] 搜索值是数组元素,从0开始计数,得搜索值的索引值;
[3] 搜索值不是数组元素,且大于数组内元素,索引值为 – (length + 1);
[4] 搜索值不是数组元素,且小于数组内元素,索引值为 – 1。*/
posted @ 2020-08-28 00:18  Whatever_It_Takes  阅读(113)  评论(0编辑  收藏  举报