我认为该方法不能直接更改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();
}
有人会解释我为什么方法适用于Linked List,但它不适用于字符串对象?我认为它也不适用于列表,并且我需要有一个返回类型LinkedList的方法,就像我对String一样。
答案 0 :(得分:3)
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();
}
答案 1 :(得分:-2)
在java中如果你将变量作为参数传递,它总是传递引用/内存位置,因此如果你更改方法中的值,原始值也将被更改。这就是为什么链表正在改变。 现在对于字符串,name.toUpperCase()将返回一个包含源字符串大写版本的新字符串,即它不会更改原始字符串..要更改orifinal字符串,请使用以下
name = name.toUpperCase();