在另一个方法中更改不是全局变量的值。

时间:2018-08-02 21:28:57

标签: java parameters

我觉得我很傻,在下面的程序中,我无法理解为什么我们能够将字符数组从一种方法传递给另一种方法并对其进行修改,但不能返回它,并且它的值仍然在第一种方法,它甚至不是全局变量。 我确定我忘记了一些Java概念。这是我的简单程序。 我们先传递字符数组,然后修改它,但不返回它,但是它的值仍然更改。

import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedHashSet;

public class RemoveDuplicates {

    public static void main(String[] args) {
        String str ="hello I am here" ;
        char[] ch = str.toCharArray();
        System.out.println(ch);
        int n = removeDupChars(ch);
        System.out.println(ch);
        for(int i=0;i<n; i++)
        System.out.print(ch[i]);
        System.out.println();
    }

    private static int removeDupChars(char a[]) {
        String str =a.toString();
        String targetStr = "";
        LinkedHashSet<Character> mySet = new LinkedHashSet<Character>();
        for(int i=0;i<a.length;i++){
            mySet.add(a[i]);
        }
        int i = 0;
        for(Character x : mySet) {
            a[i++] = x ;
        }
        return mySet.size();
    }
}  

0 个答案:

没有答案