String 是一系列字符的序列,在 Java 编程中被广泛使用。在 Java 编程语言中,字符串是对象。在 Java 中,如果我们在其他字符串变量声明中使用了相同的字符串,虚拟机可能只在内存中创建一个 String 实例。为了帮助大家理解,让我们来看下面的图解:
图解 1:
String string1 = "GeeksForGeeks";
String string2 = "GeeksForGeeks";
在上面的例子中,Java 虚拟机只会在内存中创建一个 "GeeksForGeeks" 实例。这里有两个不同的变量,它们都初始化为 "GeeksForGeeks",但实际上指向内存中同一个 String 实例。下图更准确地描绘了这个例子:-
因此,字符串字面量实际上成为了一个常量或单例。更准确地说,在 Java 中,代表 Java 字符串字面量的对象是从一个由 Java 虚拟机内部维护的常量字符串池中获取的。这意味着,即使是在不同项目中单独编译的类,只要它们被用在同一个应用程序中,就可能共享常量 String 对象。这种共享发生在运行时,因此它不是一个编译时特性。
图解 2: 如果我们想让这两个字符串变量指向独立的 String 对象,我们可以使用 new 操作符,如下所示:
String string1 = new String("GeeksForGeeks");
String string2 = new String("GeeksForGeeks");
上面的代码将在内存中创建两个不同的内存对象来表示它们,即使这两个字符串的值是相同的。下图描绘了 new 操作符的使用:
> 注意: 从上面的图片可以清楚地看出,为两个包含相同字符串值的不同字符串创建了两个不同的内存块。
示例 1:
Java
CODEBLOCK_3c24f7f4
Output
True
False
False
> 在上面的程序中,总共会创建 3 个对象。现在,如果我们想要比较 2 个字符串的内容,我们可以使用 INLINECODE8f244c3c 方法,而 INLINECODE7b5a5f1a 操作符可以用来比较两个字符串的引用是否相同。
示例 2:
Java
CODEBLOCK_f96c596a
Output
true
false
什么是 Java 中的常量?
- 程序中在执行期间其值不能改变的元素称为常量。
- 它也被称为字面量。
- 它可以是 int(整型)、float(浮点型)和 character(字符型)数据类型。
构建整型常量的规则:
- 它必须至少包含一个数字。
- 它必须不能有小数点。
- 它可以是正数或负数。
- 整型常量中不允许出现逗号或空白。
构建浮点型常量的规则:
- 它必须至少包含一个数字。
- 它必须有一个小数点。
- 它可以是正数或负数。
- 浮点型常量中不允许出现逗号或空白。
构建字符型常量的规则:
- 它是单个字母、数字或特殊符号。
- 字符常量的长度为 1 个字符。
- 字符常量包含在单引号内(例如 ch