问题: java将 数组反序输出,原数组{5, 12, 90, 18, 77, 76, 45, 28, 59, 72},反序输出后{72,59,28,45,76,77,18, 90,12,5}。
方法一:
- 直接对数组中的元素进行首尾交换。
public static void main(String[] args) {
int[] arr = { 5, 12, 90, 18, 77, 76, 45, 28, 59, 72 };
reverseOrderArray(arr);
for (int value : arr) {
System.out.print(value + " ");
}
}
/**
* 将数组反序输出
* @param arr 需要反序的数组
*/
public static void reverseOrderArray(int[] arr) {
// 把原数组元素倒序遍历
for(int i = 0; i < arr.length/2; i++) {
// 把数组中的元素收尾交换
int temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}
}
方法二:(加一个数组)
- 引入一个外部数组变量,用于保存反序后的数组,然后把原数组中的元素倒序保存于新创建的数组中。
public static void main(String[] args) {
int[] arr = { 5, 12, 90, 18, 77, 76, 45, 28, 59, 72 };
int[] newArr = reverseOrderArray(arr);
for (int value : newArr) {
System.out.print(value + " ");
}
}
/**
* 将数组反序输出
* @param arr 需要反序的数组
* @return 返回反序后的数组
*/
public static int[] reverseOrderArray(int[] arr) {
// 定义一个反序后的数组
int[] desArr = new int[arr.length];
// 把原数组元素倒序遍历
for(int i = 0; i < arr.length; i++) {
// 把arr的第i个元素赋值给desArr的最后第i个元素中
desArr[arr.length - 1 - i] = arr[i];
}
// 返回倒序后的数组
return desArr;
}
为什么方法一是无参返回, 方法二是有参返回, 画内存图简单明了. 堆和栈内存图讲解
附加:
System.out.println(reverseOrderArray(数组名));
输出:[I@15db9742
[ --> 代表数组, I–>代表int类型的数组, @之后的内容:代表的是内存地址