【小方重新学Java】Java数组

数组是具有相同数据类型的一组数据的集合。在Java中将数组看做是一个对象。

一维数组的创建及使用

创建一维数组

数组作为对象允许使用new关键字进行内存分配。在使用数组之前,必须首先定义数组变量所属的类型。
一维数组的创建有下列两种形式。
1. 先声明,再用new运算符进行内存分配

int arr[];		     	//声明int型数组,数组中的每个变量都是int型数据
arr = new int[5];   //为数组分配内存

需要注意的是,在为数组分配内存的时候必须指明数组的长度。
使用new关键字初始的时候,每个元素的初始值都是0
2. 声明的同时为数组分配内存

int month[] = new int[12];

初始化一维数组

数组的初始化可分别初始化数组中的每个元素,数组的初始化有以下两种形式。用逗号分开。

int arr[] = new int[]{1,2,3,4,5};  //创建5个元素的数组
int arr2[] = {1,2,3,4};			   //创建4个元素的数组

使用一维数组

使用下标的形式使用数组。

int day[] = new int[]{31,28,31,30,31,30,31,31,30,31,30,31};
for(int i=0;i<12;i++){
	System.out.println(day[i]);
}

二维数组的创建及使用

如果一维数组中的各个元素依然是一个数组,那么它就是一个二维数组。二维数组常用于表示表。表中的信息以行和列的形式组织。第一个下标代表元素所在的行,第二个元素代表列。

二维数组的创建

二维数组可以看做是特殊的一维数组。因此,二维数组的创建同样有两种形式。
1. 先声明,再用new运算符进行内存分配

int arr[][];		     	//声明int型二维数组,数组中的每个变量都是int数组

对于高维数组,有两种为数组分配内存的方式

  1. 直接为每一维分配内存
  2. 分别为每一维分配内存
arr = new int[2][4];    //第一种
arr = new int[2][];     //第二种
arr[0] = new int[3];
arr[1] = new int[4];

2. 声明的同时为数组分配内存

初始化二维数组

int myarr[][] = {{1,2},{3,4}};

需要注意的是如果没有初始化,默认值0。

使用二维数组

int myarr[][] = {{1,2},{3,4}};
for(int i=0;i<myarr.length;i++)
	for(int j=0;j<myarr[i].length;j++)
		System.out.println(myarr[i][j]);

数组的基本操作

java.util包中的Array类包含了用来操作数组(如搜索和排序)的各种方法,本节介绍基本的操作。

遍历数组

遍历数组就是获取数组的每个元素。通常使用for循环来实现。也可以使用foreach来实现。

int myarr[][] = {{1,2},{3,4}};
for(int i=0;i<myarr.length;i++)
	for(int j=0;j<myarr[i].length;j++)
		System.out.println(myarr[i][j]);
		
for(int[] a:myarr){
    for(int b:a){
        System.out.println(b);
            }
        }

填充替换数组元素

数组定义完成后,可通过Arrays类的静态方法fill来对数组中的元素进行替换,有两种参数类型。

 int arr[] = new int[8];
 Arrays.fill(arr,8);      //将指定值分配给数组的每一个元素
 Arrays.fill(arr,2,5,8);  //将指定值分配给数组指定范围内的数

对数组进行排序

可通过Arrays类的静态方法sort来对数组中的元素进行排序。

int arr[] = new int[]{5,5,233,45,2};
Arrays.sort(arr);
String b[] = new String[]{"fasd","fds","gdf","er"};
Arrays.sort(b);    //按照字典顺序排序

复制数组

可通过Arrays类的静态方法copyOfcopyOfRange来对数组中的元素进行复制。

String b[] = new String[]{"fasd","fds","gdf","er"}; //声明数组
String c[] = Arrays.copyOf(b,6);      				//复制数组 newLength小于b则截断 大于则设为null
String d[] =  Arrays.copyOfRange(b,2,4);            //复制从2到4下标的元素到d中

数组查询

可通过Arrays类的静态方法binarySearch二分搜索法来搜索指定元素,返回搜索元素的索引值。

int array[] = new int[]{3,6,2,4,7};
Arrays.sort(array);
System.out.println(Arrays.binarySearch(array,4));  // 2
System.out.println(Arrays.binarySearch(array,1,3,4));  // 在1到3范围内搜索

数组排序算法

冒泡排序

最常用的一种排序算法,排序过程中将小数往前放,大数往后放。
基本思想
对比相邻元素,如果满足条件就交换,把较小的元素放到数组前面,较大元素放到后面。
双重循环实现,外层循环控制排序轮数,内层循环进行对比相邻元素的大小。

 public static void bubble(int[] array){
        for(int i=1;i<array.length;i++)
            for(int j=0;j<array.length-i;j++){
                if(array[j+1]<array[j]){
                    int temp = array[j+1];
                    array[j+1] = array[j];
                    array[j] = temp;
                }
            }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值