Java学习——数组

1.数组的基本概念

1.1什么是数组

相同类型元组组成的一个集合,在内存中存放在一段连续的空间当中。每个空间都有自己独有的编号。

1.2创建数组

类型[] 数组名=new 类型[元素的个数];

比如int[] a=new int[10];

这是一个名字叫a的int类型的数组,里面存放了10个int类型的数字。下表从0到9;

1.3静态初始化

如果创建好后一个一个添加内容很麻烦,这时就可以对数组进行静态初始化

比如 int[] a=new int[]{0,1,2,3,4,5,6,7,8,9};

注意:静态初始话可以不用指定数组的长度,但是编译器在编译时会根据{}当中的内容来确定数组的长度

java当中 如果不初始化只是创数组,那么编译器会自动初始化,byte,short , int,long都自动初始化为0;float,double自动初始化为0.0;char初始化为/u0000;boolean初始化为false;

2遍历数组

int a[]=new int[]{1,2,3,4,5,6,7,8,9};
for(int i=0;i<=8;i++){
    System.out.println(a[i);


for(int i:a){
System.out.println(i);

3.java当中和数组有关的一些方法

3.1.clone()方法: 创建并返回此对象的副本。

int [] arr = {7, 8, 9};
int [] cloneArr = arr.clone();
cloneArr[2] = 888;
System.out.println(Arrays.toString(arr));//[7, 8, 9]
System.out.println(Arrays.toString(cloneArr));//[7, 8, 888]

3.2equals()方法: 指示一些其他对象是否等于此。

int[] arr1 = {123};
int[] arr2={123};
System.out.println(arr1.equals(arr2));//false   因为这两个数组没有指向同一个内存地址
int[] arr3=arr1; 
System.out.println(arr1.equals(arr3));//true

3.3Arrays.equals() 如果两个指定的数组彼此 相等 ,则返回true.

int[] arr1 = {123};
int[] arr2={123};
System.out.println(Arrays.equals(arr1,arr2));//true

3.4hashCode()方法: 根据指定数组的内容返回哈希码。
Arrays.hashCode() 方法:根据指定数组的内容返回哈希码。

int[] arr1 = {1};
System.out.println(arr1.hashCode());//1915503092
System.out.println(Arrays.hashCode(arr1));//32

3.5toString()方法: 返回对象的字符串表示形式。
Arrays.toString() 方法:返回指定数组的内容的字符串表示形式。

int[] arr = {1};
String arrString = Arrays.toString(arr);
System.out.println(arr);// [I@722c41f4   直接输出,为内存地址
System.out.println(arrString );// [1]

3.6getClass()方法: 返回此 Object的运行时类。

int a[][] = {{1},{2}};
System.out.println(a.getClass());//class [[I
System.out.println(a.getClass().getName());//[[I  几维数组就有几个[

3.7Arrays.asList() 方法: 返回由指定数组支持的固定大小的列表。 或判断数组中是否有指定字符串

String[] arr={"1","2","3"};
//作用一
System.out.println(Arrays.asList(arr));//[1, 2, 3]
//作用二
System.out.println(Arrays.asList(arr).contains("2"));//true

3.8Arrays.binarySearch() 方法: 使用二进制搜索算法搜索指定值的指定数组内容。要求被查找的一维数组必须是有序的,否则结果是错误的

int[] a = {5,1,2,3,6,4};
Arrays.sort(a);
System.out.println(Arrays.binarySearch(a,4));
System.out.println(Arrays.binarySearch(a,1,5,4));  

对查询的东西指定范围(1,5)为范围

3.9Arrays.copyOf() 方法: 复制指定的数组,用零截取或填充(如有必要),以便复制具有指定的长度。

int [] arr = {1,9,3,7};
int [] arr1=Arrays.copyOf(arr,6);
System.out.println(Arrays.toString(arr1));//[1, 9, 3, 7, 0, 0]

3.10Arrays.copyOfRange() 方法: 将指定数组的指定范围复制到新数组中。

int [] arr = {1,9,3,7};
int [] arr2=Arrays.copyOfRange(arr,1,3);//范围包含1不含3
System.out.println(Arrays.toString(arr2));//[9, 3]

3.11Arrays.deepEquals() 方法: 如果两个指定的数组彼此 深度相等 ,则返回 true 。

int a[][] = new int[][]{{0}, {1, 2, 3, 5, 4}};
int b[][] = new int[][]{{0}, {1, 2, 3, 5, 4}};
int c[][] = new int[][]{{0}};
System.out.println(Arrays.deepEquals(a, b));//deepEquals适用于多层次,true
System.out.println(Arrays.deepEquals(a, c));//false

3.12Arrays.deepHashCode() 方法: 根据指定数组的“深度内容”返回哈希码。

String[] arr={"a","b","c"};
int a=Arrays.deepHashCode(arr);
System.out.println(a);//126145

3.13Arrays.fill() 方法: 将指定的字节值分配给指定字节数组的每个元素。

int[] arr=new int[3];
Arrays.fill(arr,6);
System.out.println(Arrays.toString(arr));//[6, 6, 6]

3.14Arrays.parallelSort() 方法: 按照数字顺序排列数组的指定范围。

int[] a = {1,8,51,13,46,11,22};
Arrays.parallelSort(a);
System.out.println(Arrays.toString(a));//[1, 8, 11, 13, 22, 46, 51]

3.15Arrays.sort() 方法: 按照数字顺序排列指定的数组。

//作用一
int[] arr1={1,9,3,7};
Arrays.sort(arr1);
System.out.println(Arrays.toString(arr1));//[1, 3, 7, 9]
//作用二
int[] arr2={1,9,3,7,2,5};
Arrays.sort(arr2,1,4);//范围包含1不包4
System.out.println(Arrays.toString(arr2));//[1, 3, 9, 7, 2, 5]

3.16length()方法: 获得此数组的长度

int[] arr={1,5,6,8,2,3,7};
System.out.println(arr.length);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值