[英]Using Strings in Java Lists
我知道 Java 有一個關於字符串操作的慣用行為。 因為字符串是不可變的,我們不能改變內容。 所以我們不能寫:
String s="test;"
s.toUpperCase();
我們需要將 s.toUpperCase() 的結果分配給一個新變量,例如:
String s1="test";
String s2=s1.toUpperCase;
s1.toUpperCase
不是變成大寫的字符串s1
。 它是一個具有自己內存位置的新字符串。 所以s1
和s2
指的是兩個完整的不同內存位置,其中包含“test”和“TEST”文獻的兩份副本。 但是如果我們不想使用新變量來分配新字符串,那么我們可以這樣做:
String s="test";
s=s.toUpperCase();
問題:我們可以對 List 做同樣的事情嗎? s 變量表示具有“test”值的內存位置。 所以在s=s.toUpperCase();
我們驅動s
指向創建的字符串s.toUpperCase()
的新地址。 如果在List<String> list
中list.get(0)
指向(如s
)到字符串的位置,為什么我們不能像s
那樣做: list.get(0)=list.get(0).toUpperCase()
或任何其他方式,例如數組工作:
String[] array={"test1","test2"};
array[0]=array[0].toUpperCase();
list.get(0)=list.get(0).toUpperCase()
是 Java 語法和語義禁止的。
粗略地說(詳細信息更復雜,請參閱15.26.1. 簡單賦值運算符 =了解更多詳細信息),賦值的左側部分必須是變量(或字段)。 但是list.get(0)
不是,它是一個值,因此您必須使用一些方法來修改列表中相應元素的值:
list.set(0, list.get(0).toUpperCase())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.