Java入门到精通(三)数组介绍

上期内容:
Java入门到精通(一)语言基础
Java入门到精通(二)流程控制

1.一维数组

在这里插入图片描述
以上是一维数组的结构。
(1)创建一维数组

int arr[];//数组中的每个元素都是int型
double[] arr;//数组中的每个元素都是double型

以上创建的数组没有初始化并不能访问元素,所以必须对数组初始化才能访问元素。

int a[] = {1,2,3};
int b[] = new int[] {1,2,3};
int c[] = new int[3];
c[0] = 1;
c[1] = 2;
c[2] = 3;
这里需要注意的是:java规定访问数组元素时最后一个元素的下标是a.length-1,第一个元素是从0开始的。

获取数组的长度arr.length。

2.二维数组

在这里插入图片描述
创建二维数组

int a[][];
a = new int[2][2];
int b[][];
b = new int[2][];//这里需要注意必须先行分配,列分配可以暂时省去
b[0] = new int[2];
b[1] = new int[2];
b = new int[][2];//这种创建方式是错误

使用foreach遍历二维数组:

public class hello {
    public static void main(String[] args) {
    	//这里就是将二维数组拆分为arr.length个一维数组
        int[][] arr = new int[][]{{1,2,3},{4,5,6}};
        for (int[] x : arr){
            for (int y : x){
                System.out.print(y+" ");
            }
            System.out.println();
        }
    }
}

遍历非矩形的二维数组(也就是不规则)

int[][] arr = new int[][]{{1,2,3,4},{5,6},{7,8,9}};
for (int i = 0; i < arr.length; i++) {
     for (int j = 0; j < arr[i].length; j++) {
          System.out.print(arr[i][j]+" ");
     }
     System.out.println();
}
打印结果	:/**
         * 1 2 3 4
         * 5 6
         * 7 8 9
         */

(3).介绍一些对数组的操作

1.填充和批量替换数组元素

fill(int[] a, int value)
a 将要操作的数组名
value 要存储在数组的值
int[] arr = new int[5];
Arrays.fill(arr,1);
System.out.println(Arrays.toString(arr));
//打印结果 1 1 1 1 1
fill(int[] a,int fromIndex,int toIndex,int value)
fromIndex : 要使用指定值填充第一个元素的索引值(包括)
toIndex : 使用指定值填充的最后一个元素的索引值(不包括)
        int[] arr = new int[]{1,2,3,4,5};
        Arrays.fill(arr,1,3,8);
        System.out.println(Arrays.toString(arr));
        //打印结果[1, 8, 8, 4, 5]

打印数组的快捷方法:

  • 打印一维数组Arrays.toString(int[] arr)。
    打印二维数组Arrays.deepToString(int[] arr)

2.复制数组的几种方法

1.Arrays.copyOf(arr,newLength)
arr : 数组名
newLength  : 指定复制后新数组的长度。

注意:如果新数组的长度大于数组长度大于原数组的长度,则0来填充。

int[] arr = new int[]{1,2,3};
int newArr[] = Arrays.copyOf(arr,5);
2.Arrays.copyOfRange(arr,fromIndex,toIndex)
fromIndex : 复制数组开始的位置(包括)
toIndex : 复制数组结束的位置(不包括)
int[] arr = new int[]{1,2,3,4,5,6};
int newArr[] = Arrays.copyOfRange(arr,1,3);
3.System 类的 arraycopy() 方法
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src :原始数组,要复制到目标数组的数组
srcPos :从原始数组的哪个位置开始复制
dest :目标数组,用来存储复制后的结果
destPos :复制的时候存放在目标数组中的初始位置
length :需要复制的元素的长度
public class hello {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5,6};
        int[] des = new int[8];
        System.arraycopy(arr,0,des,3,4);
        System.out.println(Arrays.toString(des));
        //打印结果:[0, 0, 0, 1, 2, 3, 4, 0]
    }
}

Object 类的 clone() 方法
protected Object clone()
int[] arr = new int[]{1, 2, 3, 4, 5};
int[] des = arr.clone();//具体可以查看jdk文档
Arrays.binarySearch(arr, value)
value:要查找的数值
int[] arr = new int[]{1, 2, 3, 4, 5};
int value = Arrays.binarySearch(arr, 2);
int not = Arrays.binarySearch(arr,9);
System.out.println(value);//返回1
System.out.println(not);//返回-6
//进行源码追踪,具体的过程不一一列出
 return mid; // key found
 return -(low + 1);  // key not found.

顺便提一下对数组进行排序方法

Arrays.sort(arr);//直接调用方法可以进行排序。

后期我会对十种排序方法整理(虽然我现在还有四种不会,但是我后面会学习进行对其整理)

不对的内容麻烦大佬纠正谢谢~
希望大家可以点个赞

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值