本帖最后由 布鲁图斯 于 2014-8-17 12:11 编辑
数组是引用数据类型,函数调用时参数是地址传递的,为什么最终结果没有变化呢?- package com.itheima;
- /**
- * 5、 数组去重复,
- * 例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
- *
- * @author Administrator
- */
- public class ArrayTest {
- public static void main(String[] args)
- {
- int[] arr = {4,2,4,6,1,2,4,7,8};
-
- remain(arr);//去除数组中重复元素
-
- printArray(arr);//[4, 2, 4, 6, 1, 2, 4, 7, 8] ? ? why...
-
- }
- /**
- * remain()去除数组中重复元素
- */
- private static void remain(int[] arr)
- {
- int[] temp = new int[arr.length];
-
- int cnt = 0;
- for(int i=0; i<arr.length; i++)
- {
- if(!isExist(temp, arr[i]))
- temp[cnt++] = arr[i];
- }
-
- int[] result =new int[cnt];
- for(int i=0; i<cnt; i++)
- {
- result[i] = temp[i];
- }
-
- arr = result;
-
- //printArray(arr); //[4, 2, 6, 1, 7, 8]
- }
-
- private static boolean isExist(int[] arr, int num)
- {
- for(int i=0; i<arr.length; i++)
- {
- if(num == arr[i])
- return true;
- }
- return false;
- }
-
- private static void printArray(int[] arr)
- {
- System.out.print("[");
- for(int i=0; i<arr.length; i++)
- {
- if(i != arr.length-1)
- System.out.print(arr[i]+", ");
- else
- System.out.println(arr[i]+"]");
- }
- }
- }
复制代码
|
|