访问没有对象的字符串类的方法

时间:2018-01-19 07:11:24

标签: java string

public class UpLower {    
    public static void main(String[] args) {  
        String str = "HOW ARE YOU";  
        String upper_str = str.toLowerCase();  
        System.out.println("Original String: " + str);  
        System.out.println("String in uppercase: " + upper_str);  
    }  
}

此程序将字符串从高字符转换为低字符。我无法理解这个程序。

我的问题是

方法 toLowerCase()在String类中,在lang包中。在java中,我们需要为类创建一个对象来访问该类的non-static方法。如果是这种情况,如果没有为类 String 创建对象,我们如何直接访问方法 toLowerCase()

4 个答案:

答案 0 :(得分:2)

您对静态方法和实例方法的理解是正确的。

toLowerCase()实际上是一个String类型的对象实例方法。

但是在java String中有一个特殊的处理。当你写String str = "How Are You" str时会引用String对象。所以实际上你只是在返回的对象上调用实例方法toLowerCase()。

对于初学者,您可以认为String str = "How Are You";String str = new String("How Are You");类似。

但实际上两个陈述String s = "something" and String s = new String("something");

存在细微差别

如果您想了解原因,请尝试阅读Java中的字符串池和字符串不变性。

答案 1 :(得分:1)

不,你不能。为了访问任何对象方法,您需要创建它的实例。

如果要复制相同的功能,可以查看其源代码并创建另一个功能。但是我认为没有意义,如果你试图lowercase String,那它本身就是一个字符串对象,你可以在它上面调用lowerCase。嗯?

您对字符串初始化感到困惑,请阅读How can a string be initialized using " "?

答案 2 :(得分:1)

字符串很特别。当您执行:String str = "HOW ARE YOU";时,创建了一个新的字符串对象。请参阅http://net-informations.com/java/cjava/create.htm

答案 3 :(得分:-1)

String s1 =" Foo&#34 ;; //初始化Heap中的对象if" Foo"不在堆里。 字符串s2 =" Foo&#34 ;; //首先检查对象是否存在于堆中,然后它将返回其引用,否则它会使用此值初始化新对象。 所以,当你第一次写String s1 =" Foo"时,它会在内部创建并初始化一个String对象,这就是为什么它允许你访问它的方法。