簡體   English   中英

在 Java 列表中使用字符串

[英]Using Strings in Java Lists

我知道 Java 有一個關於字符串操作的慣用行為。 因為字符串是不可變的,我們不能改變內容。 所以我們不能寫:

String s="test;"
s.toUpperCase();

我們需要將 s.toUpperCase() 的結果分配給一個新變量,例如:

String s1="test";
String s2=s1.toUpperCase;

s1.toUpperCase不是變成大寫的字符串s1 它是一個具有自己內存位置的新字符串。 所以s1s2指的是兩個完整的不同內存位置,其中包含“test”和“TEST”文獻的兩份副本。 但是如果我們不想使用新變量來分配新字符串,那么我們可以這樣做:

String s="test";
s=s.toUpperCase();

問題:我們可以對 List 做同樣的事情嗎? s 變量表示具有“test”值的內存位置。 所以在s=s.toUpperCase(); 我們驅動s指向創建的字符串s.toUpperCase()的新地址。 如果在List<String> listlist.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.

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