Java中的数组

来源:互联网 发布:win10优化用什么软件好 编辑:程序博客网 时间:2024/06/05 21:51

一、数组的定义方式:
1、定义数组的四步方式
int[] a;// 定义变量
a = new int[5];// 分配空间
a[0] = 5;// 赋值
a[0] += 10;// 处理数据
2、数组声明定义的其他方式
2.1、数组声明的时候直接分配空间
int[] a1 = new int[5];
a1[0] = 0;// 然后进行赋值
2.2、声明的时候直接赋值,两种写法:
int[] a2 = { 10, 20, 30 };
int[] a3 = new int[] { 10, 20, 30 };

二、数组中的for循环:
java中有一个数组专用的for循环
for (int x : arr1) {
// 注意这里只用写变量,不用写数组!
//x的值的类型和数组的值的类型相同
System.out.print(x + " ");
}

三、基本数据类型和引用数据类型
1、基本数据类型
基本数据类型传递的是值, 不同的变量会分配不同的存储空间,改变一个变量值不会影响另一个变量值。

2、引用数据类型
引用数据类型传递的是地址,引用数据类型对引用数据类型,赋值是把原对象的引用传递给另一个引用,两个引用指向同一块内存空间。

相似之处:
  两者都传递的是栈中的值,而因为基本数据类型的值是放在栈中的,所以直接传递值而引用数据类型的值是放在堆中的,栈中放的是堆的地址,所以传递的是地址

四、Java中Arrays类的常用方法:
Arrays类是java中专门提供对数组进行操作的工具类
1、boolean equals(array1,array2) 比较两个数组是否相同
2、void sort(array) 对数组进行排序,默认是升序
3、int binarySearch(arry,key)查询元素key在数组array中的下标
4、void toString(array) 将一个数组array转换为一个字符串输出
5、void fill(array,val)将数组array的所有元素都赋值为val
6、copyOf(array,length)把数组array复制成一个长度为length的
新数组

1、boolean equals(array1,array2) 比较两个数组是否相同
如:
int[] arr1 = { 10, 50, 40, 20 };
int[] arr2 = { 10, 50, 40, 20 };
int[] arr3 = { 10, 20 };
System.out.println(Arrays.equals(arr1, arr2));
System.out.println(Arrays.equals(arr1, arr3));


2、void sort(array) 对数组进行排序,默认是升序
如:
int[] arr1 = { 10, 50, 40, 20 };
Arrays.sort(arr1);
for (int x : arr1) {
System.out.println(x);
}


3、int binarySearch(arrar,val) 查询元素val在数组array中的下标位置

调用binarySearch()方法前首先要使用sort方法对数组进行排序,否则返回的值不确定,这是由他内部的二分搜索算法决定的

1)、如果找到了元素val,则返回值为元素val在数组中的索引位置,且位置从0开始

2)、如果沒有找到元素val,返回值为负的插入点值,所谓插入点值就是第一个比元素val值大的元素在数组中的位置索引,而且这个位置索引从1开始。
如:
int[] arr1 = { 10, 50, 40, 20 };
Arrays.sort(arr1);
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.binarySearch(arr1, 10));
System.out.println(Arrays.binarySearch(arr1, 40));
System.out.println(Arrays.binarySearch(arr1, 50));
System.out.println(Arrays.binarySearch(arr1, 30));
System.out.println(Arrays.binarySearch(arr1, 60));

4、void toString(array) 讲一个数组array转换为一个字符串
输出
如:
int[] arr1 = { 10, 50, 40, 20 };
System.out.println(Arrays.toString(arr1));

5、fill(array,val) 将数组array的所有元素都赋值为val
如:
int[] arr1 = { 10, 50, 40, 20 };
Arrays.fill(arr1, 40);
System.out.println(Arrays.toString(arr1));

6、copyOf(array,length) 把数组array复制成一个长度为
length的新数组
1)新数组和原数组长度相同,则完全复制
2)新数组比原数组长度短,则截止到原数组length长度的位置
3)新数组比原数组长度长,则长出的值默认补充为0
如:
int[] arr4 = { 10, 50, 40, 20 };
int[] arr5 = Arrays.copyOf(arr4, 3);
int[] arr6 = Arrays.copyOf(arr4, 4);
int[] arr7 = Arrays.copyOf(arr4, 5);
System.out.println(Arrays.toString(arr5));
System.out.println(Arrays.toString(arr6));
System.out.println(Arrays.toString(arr7));