Java中的字符串表示

时间:2011-11-09 18:40:05

标签: java

String在Java中表示为对象。因此,对象包含存储在对象内的实例变量中的值。对象还包含对对象进行操作的代码体。这些代码体称为方法


包含相同类型的值和相同方法的对象被组合在一起成为类。可以将类视为这些对象的类型定义。因此,Java中的String如何表示?让我们考虑Java中的以下代码片段。

 final public class Main
 {
    public static void main(String[] args)
    {
        String s="black lion";
        String s1=new String(s);

        System.out.println(s.toUpperCase());
        System.out.println("black lion".toUpperCase());
        System.out.println(s1.toUpperCase());
    }
}

上面的代码在将其转换为大写后显示String。在此语句String s="black lion";中,要分配的字符串在哪里。它是被分配到String类中的实例变量还是某个地方?并在本声明中"black lion".toUpperCase();。它是String类的对象吗?怎么样?

3 个答案:

答案 0 :(得分:5)

字符串是char[],其中包含一系列UTF-16 code units,该数组的int偏移量,int长度。

我认为你混淆的根源是

String s

创建一个分配到。

的字符串

没有。它为字符串引用创建空间。分配副本引用,但不修改这些引用引用的对象。

你也应该知道

new String(s)

并没有真正做任何有用的事情。它只创建另一个由同一数组,偏移量和长度支持的实例s。很少有理由这样做,因此被大多数Java程序员认为是不好的做法。

"my string"这样的Java双引号字符串实际上是对interned String个实例的引用,因此"foo"是对同一个String实例的引用,无论它出现多少次你的代码。

答案 1 :(得分:2)

字符串在Java中是不可变的,因此当您执行println时,String会创建一个新的toUpperCase(以后会收集垃圾)。

答案 2 :(得分:1)

如果我得到你想知道的东西。 String对象由双引号"表示。这称为字符串文字。