鉴于代码..
public class test {
public static void main (String args[] ) {
endUp("Hleeloe");
}
public static String endUp(String str) {
if (str.length() < 3) {
return str.toUpperCase();
}
if (str.length() >= 3) {
String sub= str.substring(str.length()-3,str.length());
String front = str.substring(0,str.length()-3);
sub.toUpperCase();
System.out.println(front + sub);
System.out.println(front);
System.out.println(sub);
System.out.println(sub.toUpperCase());
return front + sub.toUpperCase();
}
return str;
}
}
控制台:
Hleeloe
Hlee
loe
LOE
我想拥有sub.toUpperCase();转动字符串&#34; sub&#34;全部大写字母。但它没有用。你可以看到我第一次打印sub时,它仍然是小写的。但是,当我包含sub.toUpperCase();在返回之前的System.out.println()中,它实际上打印出控制台内显示的所有大写字母。
这是为什么?我如何才能使用sub.toUpperCase();部分?
答案 0 :(得分:3)
String
是不可变的。所以,sub.toUpperCase()
不会改变字符串内部。它只返回一个大写的新字符串值:
要大写sub
,而是将sub
分配给toUpperCase()
方法的结果,如下所示:
sub = sub.toUpperCase();
这样,你返回一个新的大写字符串。
答案 1 :(得分:1)
.toUpperCase()
不会修改它应用的字符串。
你需要这样做:
sub = sub.toUpperCase();
答案 2 :(得分:0)
您的代码已更正,您不能将大写字母值分配给字符串sub ...
public static void main(String args[]) {
endUp("Hleeloe");
}
public static String endUp(String str) {
if (str.length() < 3) {
return str.toUpperCase();
}
if (str.length() >= 3) {
String sub = str.substring(str.length() - 3, str.length());
String front = str.substring(0, str.length() - 3);
sub = sub.toUpperCase();
System.out.println(front + sub);
System.out.println(front);
System.out.println(sub);
System.out.println(sub.toUpperCase());
return front + sub.toUpperCase();
}
return str;
}