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

Java 如何在同一对象上添加多个方法?,java,methods,Java,Methods,我是Java的初学者。我想知道是否有可能在同一个对象上添加多个方法,而不必创建一个新方法(在本例中为-String) 编译器不会给出任何错误,但不会输出任何内容。如果我为.tolowerCase()方法创建另一个字符串,它就会工作。有没有办法像这样使用这些方法?如果没有,为什么 "sdfsd".trim().substring(0,1) 此部分返回“s” 返回“S” 返回”。它不会回到您开始使用的原始字符串;它只需获取您得到的结果的子字符串(1),“S”,即空字符串。那是你的问题 如果你想用

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

编译器不会给出任何错误,但不会输出任何内容。如果我为
.tolowerCase()
方法创建另一个字符串,它就会工作。有没有办法像这样使用这些方法?如果没有,为什么

 "sdfsd".trim().substring(0,1)
此部分返回
“s”

返回
“S”

返回
。它不会回到您开始使用的原始字符串;它只需获取您得到的结果的
子字符串(1)
“S”
,即空字符串。那是你的问题

如果你想用字符串的不同部分做不同的事情,你必须把它存储在一个变量中,用不同的部分做不同的事情,然后把它重新组合起来。如果这是你的要求,你不能像你想做的那样“回到一个水平”

此部分返回
“s”

返回
“S”

返回
。它不会回到您开始使用的原始字符串;它只需获取您得到的结果的
子字符串(1)
“S”
,即空字符串。那是你的问题


如果你想用字符串的不同部分做不同的事情,你必须把它存储在一个变量中,用不同的部分做不同的事情,然后把它重新组合起来。如果这是您所要求的,那么您不能像您试图做的那样“备份一个级别”。

在Java中,字符串是不可变的。每当你“修改”它,你实际上就创建了一个新的

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);
    }
}
我猜您需要以下代码

public class DeletAble {

    public static void main(String[] args) {

        // Your code is esentally shorthand for the following code
        String userName = "sdfsd"                                       // Value "sdfsd"
        String firstLetter = userName.substring(0,1).toUpperCase();     // Value "S"
        String rest = userName.substring(1).toLowerCase();              // Value "dfsd"
        userNmame = firstLetter + rest;                                 // Value "Sdfsd

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

在Java中,字符串是不可变的。每当你“修改”它,你实际上就创建了一个新的

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);
    }
}
我猜您需要以下代码

public class DeletAble {

    public static void main(String[] args) {

        // Your code is esentally shorthand for the following code
        String userName = "sdfsd"                                       // Value "sdfsd"
        String firstLetter = userName.substring(0,1).toUpperCase();     // Value "S"
        String rest = userName.substring(1).toLowerCase();              // Value "dfsd"
        userNmame = firstLetter + rest;                                 // Value "Sdfsd

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

您可以完全按照您在那里得到的操作,但这是字符串的路径:

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

子字符串(1)获取索引1处的字符,您需要的是索引0。

您可以完全按照索引0中的内容进行操作,但这是字符串的路径:

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

子字符串(1)获取索引1处的字符,您需要的是索引0。

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

您认为
子字符串(0,1)
有什么作用?您为什么这么认为?
子字符串(1)
做什么?取第一个字母并使其大写。“m”->“m”。为什么不喜欢(.子字符串(1)应该使字母的其余部分小写…@Aminorph您可以使用
charAt()
获取单个字符的方法请记住,
String
是一种不可变的类型。您调用的方法不是在单个实例上运行的。相反,每次链式方法调用都会返回一个
String
类型的新对象。您是在询问方法链式,还是在询问为什么您认为什么都不可用正在输出?您认为
子字符串(0,1)
有什么作用?您为什么这么认为?子字符串(1)
有什么作用?取第一个字母并使其大写。“m”->“m”。为什么不喜欢?:(.substring(1)应该使其余字母小写…@Aminorph您可以使用
charAt()
获取单个字符的方法请记住,
String
是一种不可变的类型。您调用的方法不是在单个实例上运行的。相反,每次链式方法调用都会返回一个
String
类型的新对象。您是在询问方法链式,还是在询问为什么您认为什么都不可用正在输出?谢谢!我想我感觉好像有某种快捷方式。谢谢你清理它。干杯!有一个“快捷方式”可以链接调用,但是字符串从来都不是修饰符,你需要存储结果(一个新字符串)谢谢你!我想我觉得有一些捷径。谢谢你清理它。干杯!有一个“捷径”,你可以连接电话