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()。
答案 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对象,这就是为什么它允许你访问它的方法。