如何在同一个对象上添加多个方法?

时间:2015-08-06 19:41:29

标签: java methods

我是Java的初学者。我想知道是否可以在同一个对象上添加多个方法而不必创建一个新方法(在本例中为String)。

public class DeletAble {

    public static void main(String[] args) {
        // Refrain from saving this document

        String userName = "sdfsd".trim().substring(0,1).toUpperCase().substring(1).toLowerCase();
        System.out.println(userName);

    }
}

编译器不会给出任何错误,但是没有打印出来。如果我为.tolowerCase()方法创建另一个String,它就可以工作。有没有办法像这样使用这些方法,如果没有:为什么?

4 个答案:

答案 0 :(得分:3)

 "sdfsd".trim().substring(0,1)

此部分返回"s"

.toUpperCase()

返回"S"

.substring(1)

返回""。它没有回到你开始的原始字符串;它只需要substring(1)得到的结果"S",这是空字符串。这是你的问题。

如果你想对字符串的不同部分做不同的事情,你将不得不将它存储在一个变量中,用不同的部分做不同的事情,然后再把它重新组合在一起。你不能去恢复一个级别"就像你正在尝试做的那样,如果这就是你所要求的。

答案 1 :(得分:1)

在Java中,字符串是不可变的。无论何时“修改”它,你实际上都会创建一个新的。

<Property Id="Program.ReleaseBuild" Value="0" />
<?define ReleaseBuild = [Program.ReleaseBuild]?>

<Fragment>
    <ComponentGroup Id="ProductComponents" Directory="InstallFolder">
        <Component Id="TheExe" Guid="GUID_GOES_HERE">
            <?if $(var.ReleaseBuild) = 1?>
            <File Id="ProjectExe" Source="(Rel Project Path)/program.exe" />
            <?else?>
            <File Id="ProjectExe" Source="(Dev Project Path)/program.exe" />
            <?endif?>
        </Component>
    </ComponentGroup>
</Fragment>

我猜您想要以下代码

public class DeletAble {

    public static void main(String[] args) {

        // Your code is esentally shorthand for the following code
        String userName = "sdfsd"           // Value "sdfsd"
        userName = userName.substring(0,1)  // Value "s"
        userName = userName.toUpperCase()   // Value "S"
        userName = userName.substring(1)    // Value ""
        userName = userName.toLowerCase()   // Value ""

        // Prints emmpty string ""
        System.out.println(userName);
    }
}

答案 2 :(得分:0)

你可以完全按照你所做的那样去做,但这是你的字符串:

"sdfsd" -> "sdfsd" -> "s" -> "S" -> "" -> ""

substring(1)获取索引1处的字符,您想要的是索引0。

答案 3 :(得分:0)

当您在int方法中放置2个substring参数时,第一个表示String中要从中提取substring的第一个字符的索引,第二个是您停在的索引,该索引不包含在subsstring中。您编写了.substring(0,1),这意味着第一个字符将是String的索引0,而substring将直到(但不包括)原始String的索引1。这意味着生成的String只有1个字符。之后,您尝试获取.substring(1),这意味着1的索引String处的字符,但因为只有1个字符,所以没有索引1(仅索引{{ 1}})。这就是为什么没有输出的原因。为了得到结果,我假设你最初想要尝试制作第一个0方法:substring