数组

For-Each 循环

JDK 1.5 引进了一种新的循环类型,被称为 For-Each 循环或者加强型循环,它能在不使用下标的情况下遍历数组。

语法格式如下:

for(type element: array)
{
    System.out.println(element);
}

实例

该实例用来显示数组 myList 中的所有元素:

TestArray.java 文件代码:

数组

 

 

数组

 

 数组作为返回值

数组

 

 

ava中Arrays类的常用方法
Arrays类位于 java.util 包中,主要包含了操作数组的各种方法。

import java.util.Arrays;
1
Arrays.fill(); //填充数组

int[] arr = new int[5];//新建一个大小为5的数组
Arrays.fill(arr,4);//给所有值赋值4
String str = Arrays.toString(arr); // Arrays类的toString()方法能将数组中的内容全部打印出来
System.out.print(str);
//输出:[4, 4, 4, 4, 4]
1
2
3
4
5
int[] arr = new int[5];//新建一个大小为5的数组
Arrays.fill(arr, 2,4,6);//给第2位(0开始)到第4位(不包括)赋值6
String str = Arrays.toString(arr); // Arrays类的toString()方法能将数组中的内容全部打印出来
System.out.print(str);
//输出:[0, 0, 6, 6, 0]
1
2
3
4
5
Arrays.sort(); //数组排序

Arrays类有一个静态方法sort,利用这个方法可传入要排序的数组进去排序,因为传入的是一个数组的引用,所以排序完成的结果也通过这个引用来更改数组。

1.数字排序

int[] intArray = new int[] { 4, 1, 3, -23 };
Arrays.sort(intArray);
//输出: [-23, 1, 3, 4]
1
2
3
2.字符串排序,先大写后小写

String[] strArray = new String[] { “z”, “a”, “C” };
Arrays.sort(strArray);
//输出: [C, a, z]
1
2
3
3.严格按字母表顺序排序,也就是忽略大小写排序 Case-insensitive sort

Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);
//输出: [a, C, z]
1
2
4.反向排序, Reverse-order sort

Arrays.sort(strArray, Collections.reverseOrder());
//输出:[z, a, C]
1
2
5.忽略大小写反向排序 Case-insensitive reverse-order sort

Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);
Collections.reverse(Arrays.asList(strArray));
//输出: [z, C, a]
1
2
3
6.选择数组指定位置进行排序

int[] arr = {3,2,1,5,4};
Arrays.sort(arr,0,3);//给第0位(0开始)到第3位(不包括)排序
String str = Arrays.toString(arr); // Arrays类的toString()方法能将数组中的内容全部打印出来
System.out.print(str);
//输出:[1, 2, 3, 5, 4]
1
2
3
4
5
Arrays.toString(); //将数组中的内容全部打印出来

int[] arr = {3,2,1,5,4};
System.out.print(arr);//直接将数组打印输出
//输出:[I@7852e922 (数组的地址)

String str = Arrays.toString(arr); // Arrays类的toString()方法能将数组中的内容全部打印出来
//System.out.print(str);
//输出:[3, 2, 1, 5, 4]
1
2
3
4
5
6
7
Arrays.equals(); //比较数组元素是否相等

int[] arr1 = {1,2,3};
int[] arr2 = {1,2,3};
System.out.println(Arrays.equals(arr1,arr2));
//输出:true
//如果是arr1.equals(arr2),则返回false,因为equals比较的是两个对象的地址,不是里面的数,而Arrays.equals重写了equals,所以,这里能比较元素是否相等。
1
2
3
4
5
Arrays.binarySearch(); //二分查找法找指定元素的索引值(下标)

数组一定是排好序的,否则会出错。找到元素,只会返回最后一个位置

int[] arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 30));
//输出:2 (下标索引值从0开始)
1
2
3
int[] arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 36));
//输出:-4 (找不到元素,返回-x,从-1开始数,如题,返回-4)
1
2
3
int []arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 0,3,30));
//输出:2 (从0到3位(不包括)找30,找到了,在第2位,返回2)
1
2
3
int []arr = {10,20,30,40,50};
System.out.println(Arrays.binarySearch(arr, 0,3,40));
//输出:-4 (从0到3位(不包括)找40,找不到,从-1开始数,返回-4)
1
2
3
Arrays.copeOf() 和Arrays.copeOfRange(); //截取数组

int[] arr = {10,20,30,40,50};
int[] arr1 = Arrays.copyOf(arr, 3);
String str = Arrays.toString(arr1); // Arrays类的toString()方法能将数组中的内容全部打印出来
System.out.print(str);
//输出:[10, 20, 30] (截取arr数组的3个元素赋值给新数组arr1)
1
2
3
4
5
int []arr = {10,20,30,40,50};
int []arr1 = Arrays.copyOfRange(arr,1,3);
String str = Arrays.toString(arr1); // Arrays类的toString()方法能将数组中的内容全部打印出来
System.out.print(str);
//输出:[20, 30] (从第1位(0开始)截取到第3位(不包括)




上一篇:【Java】(十)数组、Arrays类、稀疏矩阵


下一篇:golang使用gdb