簡體   English   中英

使用方法更改鏈接列表

[英]Changing a Linked List with a method

我以為該方法不能直接在Java中更改對象,但是正如我所知,我錯了。

           public static void main(String[] args) {

             LinkedList<Integer> list = new LinkedList<>();
             String name = "Boycie";

                add(5, list);
                add(2, list);
                add(3, list);

                for(Integer integer:list){
                    System.out.print(integer + " ");
                }

                toUpperCase(name);
                System.out.println(name);
            }

            public static void add(int number, LinkedList<Integer> list){
                list.add(number);
            }
            public static void toUpperCase(String name){
                name.toUpperCase();
            }

有人可以解釋一下為什么方法對鏈接列表有效,但對字符串對象無效嗎? 我以為它也不能用於列表,並且我需要像String一樣具有返回類型LinkedList的方法。

Java中的字符串是不可變的,因此對該字符串的所有操作都返回一個新副本。

因此,您可以執行以下操作以獲得期望的結果:

    LinkedList<Integer> list = new LinkedList<>();
    String name = "Boycie";

    add(5, list);
    add(2, list);
    add(3, list);
    for (Integer integer : list) {
        System.out.print(integer + " ");
    }
    String newName = toUpperCase(name);
    System.out.println(name);
    System.out.println(newName);
}

public static void add(int number, LinkedList<Integer> list) {
    list.add(number);
}

public static String toUpperCase(String name) {
    return name.toUpperCase();
}

在Java中,如果您將變量作為參數傳遞,則它始終會傳遞引用/內存位置,因此,如果您在方法內部更改了值,原始值也將被更改。 這就是為什么鏈接列表正在更改。 現在對於字符串,name.toUpperCase()將返回一個新字符串,其中包含源字符串的大寫版本,即它不會更改原始字符串。要更改原始字符串,請使用以下命令

名稱= name.toUpperCase();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM