我是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,它就可以工作。有没有办法像这样使用这些方法,如果没有:为什么?
答案 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
。