Java 为什么赢了';将字符串元素转换为小写?
为什么不将string元素转换为小写? 给定字符串输入,转换为字符串数组。我希望每个单词都是小写的。然而,当我调试时,我注意到数组中的元素仍然在不同的情况下变化Java 为什么赢了';将字符串元素转换为小写?,java,arrays,string,Java,Arrays,String,为什么不将string元素转换为小写? 给定字符串输入,转换为字符串数组。我希望每个单词都是小写的。然而,当我调试时,我注意到数组中的元素仍然在不同的情况下变化 String[] words = paragraph.split(" "); //[how, to, do, in, java] for(String word : words){ word = word.toLowerCase(); } 因为通过执行toLowerCase(),您正在实
String[] words = paragraph.split(" "); //[how, to, do, in, java]
for(String word : words){
word = word.toLowerCase();
}
因为通过执行
toLowerCase()
,您正在实例化一个新的字符串。因此,您的word
变量不再是对数组项的引用
要么将toLowerCase()
的结果添加到新数组,要么使用索引循环:
for(i=0;i
您没有修改数组,而是将小写字符串分配给单词实例
可以使用classic for循环并将小写值指定给数组的当前索引
例如,for循环应该如下所示
for(int i=0;i< words.length;i++){
words[i] = words[i].toLowerCase();
System.out.println(words[i]);
}
for(int i=0;i
默认情况下,字符串对象是不可变的。当您将某些内容重新分配给字符串时,它会创建一个新对象,因此Word数组中的原始字符串对象保持不变。toLowerCase
将返回一个新的
对象,您必须存储它
您可以使用Java 8在一行中实现它:
Arrays.setAll(words, i -> words[i].toLowerCase());
是的,你只是没有对结果做任何事toLowerCase
将返回一个新对象如果您正在使用旧的for循环
它会工作得更好:for(int i=0;i
对于某些语言,以更改word并用新对象替换数组中的旧word对象的方式执行此操作。Java不是这样工作的。