为什么你不能只是粘贴方法使其工作?

时间:2014-06-06 22:49:57

标签: java

鉴于代码..

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();部分?

3 个答案:

答案 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;
}