gpt4 book ai didi

java - Java 中的字符串表示

转载 作者:行者123 更新时间:2023-11-29 10:20:02 26 4
gpt4 key购买 nike

字符串在 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 s="black lion"; 中,字符串赋值在哪里。它是否被分配到 String 类或某处的实例变量中?并在此语句中 "black lion".toUpperCase();。它是 String 类的对象吗?怎么办?

最佳答案

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

我认为你困惑的根源在于

String s

创建一个分配给的字符串。

事实并非如此。它为字符串引用创建空间。分配复制周围的引用,但不会修改这些引用所指的对象。

你还应该意识到

new String(s)

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

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

关于java - Java 中的字符串表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8069848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com