(1)方式一:for循环
通过for循环就可以遍历数组,因为数组的每个元素都可以通过索引来访问,因此使用标准的for循环可以完成一个数组的遍历。
int[] ns = {1, 4, 9, 16, 25};
for(int i=0; i
数组的索引范围为0~ns.length-1,当 i=ns.length 时就会报超过索引范围错误。
(2)方式二:for-each循环
int[] ns = {1, 4, 9, 16, 25};
for (int n:ns) {
System.out.println(n);
}
变量n直接拿到ns数组的元素,而不是索引。显然for-each循环更加简洁,但for-each循环无法拿到数组的索引。
使用for-each循环打印也很麻烦,Java标准库提供了Arrays.toString(),可以快速打印数组内容。
import java.util.Arrays;
int[] ns = {1, 4, 9, 16, 25};
System.out.println(Arrays.toString(ns));
// 输出结果;
[1, 4, 9, 16, 25]
2、数组排序
对数组进行排序是程序中非常基本的需要。常用的排序算法有冒泡排序、插入排序和快速排序等。
(1)使用冒泡对一个整型数组从小到大进行排序:
int[] ns = {28, 12, 89, 73, 65, 18, 96, 50, 8, 36};
// 排序前:
System.out.println(Arrays.toString(ns));
// 比较趟数
for (int i=0; i ns[j+1]) {
int tmp = ns[j];
ns[j] = ns[j+1];
ns[j+1] = tmp;
}
}
}
// 排序后:
System.out.println(Arrays.toString(ns));
// 运行结果:
[28, 12, 89, 73, 65, 18, 96, 50, 8, 36]
[8, 12, 18, 28, 36, 50, 65, 73, 89, 96]
冒泡排序的特点是,每一轮循环后,最大的一个数被交换到末尾,因此,下一轮循环就可以"刨除"最后的数,每一轮循环都比上一轮循环的结束位置靠前一位。交换两个变量的值需要借助一个临时变量。
(2)使用Java的标准库已经内置的排序功能,只需要调用JDK提供的Arrays.sort()就可以排序:
int[] ns = {28, 12, 89, 73, 65, 18, 96, 50, 8, 36};
Arrays.sort(ns);
System.out.println(Arrays.toString(ns));
// 运行结果:
[8, 12, 18, 28, 36, 50, 65, 73, 89, 96]
使用内置的Arrays.sort()对数组排序,实际上修改了数组本身,即变量ns指向的数组内容已经被改变。如果排序的是字符串数组,字符串是引用类型,因此数组的每个元素指向变化了。



