首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用方法更改链表

使用方法更改链表
EN

Stack Overflow用户
提问于 2017-01-13 19:08:09
回答 2查看 284关注 0票数 0

我以为这个方法不能直接改变java中的对象,但我发现我错了。

代码语言:javascript
复制
           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();
            }

有人能解释一下为什么方法适用于链表,而不适用于字符串对象吗?我认为它也不适用于list,并且我需要有一个返回类型为LinkedList的方法,就像我对String所做的那样。

EN

回答 2

Stack Overflow用户

发布于 2017-01-13 19:14:20

在Java中,字符串是不可变的,所以对字符串的所有操作都会返回一个新的副本。

因此,您可以执行以下操作,以获得预期的结果:

代码语言:javascript
复制
    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();
}
票数 3
EN

Stack Overflow用户

发布于 2017-01-13 19:17:46

在java中,如果你传递一个变量作为参数,它总是传递引用/内存位置,因此如果你改变了一个方法中的值,原始值也会被改变。这就是链表发生变化的原因。现在,对于字符串,name.toUpperCase()将返回一个包含源字符串的大写版本的新字符串,即它不会更改原始字符串。要更改orifinal字符串,请使用以下命令

名称= name.toUpperCase();

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41633221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档