Java 中字符串的存储

Java 中字符串的存储

Java 中字符串的存储

javaobject oriented programmingprogramming更新于 2024/5/30 19:56:17

字符串是 Java 中存储一系列字符的类。这些字符实际上是字符串类型的对象。字符串的值括在双引号中。字符串类在 java.lang 包中可用。

在本文中,我们将研究 Java 中字符串的存储机制。

字符串和字符串的存储

创建字符串 −

语法

String nameOfobject = " values ";

实例 1

String st1 = "Tutorix and Tutorialspoint";

这里,"st1"是引用变量,其值用双引号引起来。

我们还可以使用 new 关键字来创建新字符串 −

语法

String nameOfobject = new String(" values ");

实例 2

String st2 = new String("You are here at Tutorialspoint");

此处,"st2"是使用 new 关键字创建的引用变量。

从字符数组创建字符串 −

实例 3

char chs[] = { 'T', 'U', 'T', 'O', 'R', 'I', 'X' };

String st3 = new String(chs);

在上面的例子中,我们创建了字符数组"chs",并使用 new 关键字将它们作为参数传递给字符串"st3"。

到目前为止,我们已经讨论了什么是字符串以及如何以多种方式创建字符串。现在,让我们了解它是如何存储在内存中的。

字符串池

Java 中的字符串存储与其他编程语言不同。我们都知道引用变量存储在堆栈中,而它们的值存储在堆中。字符串的情况也是如此,引用变量存储在堆栈中,但它们的对象以及给定的值存储在字符串池中,字符串池是堆内的一个单独内存空间。

当我们创建一个字符串类型的对象时,它会存储在堆的字符串池中。此时,字符串池是在堆中创建的。现在,每当我们创建一个具有相同值或不具有相同值的新字符串时,JVM 都会检查给定的值是否已在字符串池中可用。如果不可用,则为该引用变量创建新值,但在相反情况下,JVM 不会重新创建具有给定值的新对象,而只是将旧值指向该引用变量。

示例

假设我们正在创建一个字符串对象,如下所示 -

String st4 = "Tutorix";

然后,它将存储在字符串池中 -

当我们创建一个新的 String 对象时 -

String st5 = "Tutorials";然后,

但是,如果我们将 st5 初始化为"Tutorix",则 JVM 不会为其创建新对象。它将旧值指向"st5"。

用于检查字符串存储的程序

我们可以使用比较运算符"=="检查两个引用变量是否指向同一个对象。当两个对象引用指向同一个实例时,它返回 true,否则返回 false。

示例 1

在此示例中,我们将声明并初始化两个具有相同值的字符串变量"st1"和"st2"。然后,我们将使用 == 运算符检查它们是否指向同一个对象。结果将存储在布尔变量"isSame"中。

public class Main {

public static void main(String[] args) {

String st1 = "Tutorix";

String st2 = "Tutorix";

boolean isSame = (st1 == st2);

System.out.print(isSame);

}

}

输出

true

示例 2

在此示例中,我们将使用 new 关键字创建两个字符串对象。当我们使用 new 关键字时,JVM 会创建一个新对象,而不管给定对象的值如何。换句话说,无论值是否相同,JVM 都会为给定的引用变量创建一个新对象。

public class Main {

public static void main(String[] args) {

String st1 = new String("Tutorix");

String st2 = new String("Tutorix");

boolean isSame = (st1 == st2);

System.out.print(isSame);

}

}

输出

false

在上面的代码中,我们使用 new 关键字创建了两个字符串,并再次使用 == 运算符检查它们是否指向同一个对象。结果为 false,表示两者都指向不同的对象。

结论

在本文中,我们了解了字符串以及它们如何存储在内存中。此外,我们还通过 Java 程序检查了两个具有相同值的引用变量是否指向同一个对象。

相关文章

在 Java 中计算 n 中至少有一位数字与 n 相同的除数

Java 中二叉树奇数位置和偶数位置节点之和的差异

Java 中二叉树奇数层和偶数层节点之和的差异

奇数和偶数之和的差异。

前 n 个自然数的平方和与和的平方之间的差异。

Java 中数组中最大和最小素数之间的差异

Java 中的 EnumMap 类

在 Java 中比较两个字符串

在 Java 中比较日期

Java 中的流

有用资源

java 参考教程 - 该教程包含有关 java 的更多信息:https://www.w3schools.cn/java/

打印

下一节:Java 中的字符串数组 ❯❮ 上一节:在 LinkedList 中插入节点的 Java 程序

相关文章

起亚kx5油箱多少升 起亚kx5加多少号汽油
beat365手机版官方网站

起亚kx5油箱多少升 起亚kx5加多少号汽油

⌚ 08-29 👁️‍🗨️ 8552
网格和参考线
365bet育在线网址

网格和参考线

⌚ 08-10 👁️‍🗨️ 5630
HOTSUIT后秀是什么牌子?哪个国家什么档次几线品牌?
365结束投注什么意思

HOTSUIT后秀是什么牌子?哪个国家什么档次几线品牌?

⌚ 11-09 👁️‍🗨️ 7805