/**
* @author fxliu
* @version 1.0
*/
public class TestString
{
public static void main(String args[])
{
String s = new String("abc");
/*生成了两个对象,一个abc是在String pool里面,一个abc是在内存的堆里面,s是指向堆里面的一个对象,
* 只有用new关键字生成出来的才叫对象,s是指向堆里面对象的地址
* */
String s1 = "abc";
/* 当执行完这行语句,一个新的对象也没有生成,只是定义一个字符串常量,而不是用new的时候,会在string pool里面查找
是否已经存在了abc这样一个对象,如果已经存在就直接使用
* */
String s2 = new String("abc");
/*首先查找abc在string pool里面是否存在,如果已经存在就在string pool里不再创建
只要有new就会在堆里面生成一个新的对象,
* */
System.out.println(s == s1);
System.out.println(s == s2);
System.out.println(s1 == s2);
/*==是判断他们引用的地址是否一样
s1——>abc是string pool里面的
s——>abc是堆里面的
s2——>abc是另一个堆里面的
三个不同的对象,指向不同的地方
*/
/* 运行结果
false
false
false*/
//首先intern()是返回poo里面的对象
System.out.println(s == s.intern());//false s是堆里面的,s.intern()是pool里面的所以返回false
System.out.println(s1 == s1.intern());//true s1是pool,s1.intern()也是pool里面
System.out.println(s.intern() == s2.intern());//true,都是pool里面的
String h = "hellolili";
String h1 = "hello";
String name = "lili";
/*==========================================*/
System.out.println("=================");
System.out.println(h == "hello" + "lili");//true 只是两个常量,它都是指向pool里面的
System.out.print(h == "hello" + name);//false,name新创建了一个对象是指向堆里面的,所以返回为false
}
}
分享到:
相关推荐
### String对象常用的属性与方法 在JavaScript中,`String`对象是用于表示和操作文本的强大工具。它提供了许多内置的方法来帮助我们处理字符串数据。本文将详细介绍`String`对象的一些常用属性和方法,并通过示例...
此程序是向大家展示js脚本中string对象的基本应用
读入未知数目的string对象.cpp
【Prototype String对象学习】 在JavaScript中,Prototype是一个库,它扩展了JavaScript的内置对象,包括String对象。这里的“Prototype String对象”是指Prototype库为JavaScript原生的String对象添加的一些额外...
86.java中String对象的特点.zip86.java中String对象的特点.zip86.java中String对象的特点.zip86.java中String对象的特点.zip86.java中String对象的特点.zip86.java中String对象的特点.zip86.java中String对象的特点....
### Java String对象的经典问题 #### 一、String 类与对象机制概述 在Java中,`String`类是一个非常重要的类,它提供了丰富的功能用于处理文本数据。`String`类是不可变的(immutable),这意味着一旦一个`String`...
### string对象的操作详解 #### 一、string 类型简介及基本操作 在现代 C++ 编程中,`std::string` 是一个极其重要的类,它提供了丰富的接口用于字符串的处理,大大简化了字符串操作的复杂性。下面将详细介绍 `std...
"Java 中 Object 对象和 String 对象的解析" Java 中的 Object 对象和 String 对象是两个非常重要的概念。在 Java 中,每个对象都继承自 Object 对象,这意味着每个对象都拥有 Object 对象的方法和属性。String ...
### 创建string对象过程的内存分配详解 #### 一、引言 在Java中,`String` 类是最常用的数据类型之一,用于表示不可变的字符序列。`String` 对象的创建涉及复杂的内存分配机制,特别是在Java虚拟机 (JVM) 的环境中...
CString和string对象的相互转化问题 CString对象和string对象是两种不同的字符串类型,它们之间的转化是非常重要的。本文将详细介绍CString和string之间的转化问题,以及它们的用法。 一、CString和string之间的...
在Java编程语言中,String对象被认为是不可变的。这个特性是Java设计者为了优化性能、安全性和线程安全性而有意设定的。理解String对象的不可变性对于Java开发者来说至关重要,因为它影响着代码的编写、内存管理和多...
解析Java中的String对象的数据类型字符串 Java中的String对象是一种特殊的数据类型,它不同于基本数据类型,也不同于其他对象。String对象的默认值是null,但它又是一种特殊的对象,有其它对象没有的一些特性。 ...
对String创建几个对象代码详解,包括字符串相加,对象相加等等
JAVA 面试题解惑系列之 String 对象创建机制 本文将深入探讨 JAVA 中 String 对象的创建机制,解答常见的面试题目,并探索 String 对象池的概念和机制。 一、String 对象的创建方式 在 JAVA 中,String 对象可以...
在本实例中,“Javascript实例-String对象-唐诗三百首”着重讲解了如何利用JavaScript的String对象来展示中国传统文化瑰宝——唐诗三百首。这个项目不仅能够帮助初学者加深对JavaScript字符串操作的理解,同时也能...
JavaScript中的String对象是编程语言中处理文本的基本工具。在JavaScript中,字符串被当作对象来处理,这赋予了它们丰富的属性和方法,使得开发者能够轻松地进行各种文本操作。以下是关于String对象的详细说明: 1....
JavaScript中的String对象是编程中非常基础且重要的概念,它用于表示和操作文本数据。在JavaScript中,通过单引号或双引号包围的任何字符序列都会被视为字符串,并且它们本质上都是String构造函数的实例。本节主要...
在C++中,我们通常会遇到三种主要的字符串形式:C字符串,string对象,以及字符串字面值。这些字符串形式各有特点,适用场景不同,理解它们之间的差异对于编写高效、安全的代码至关重要。 一、字符串字面值 字符串...
JavaScript中的String对象是处理文本数据的核心工具,它提供了多种方法和属性来操作和格式化字符串。下面我们将深入探讨String对象的一些关键特性和用法。 1. 创建String对象: 创建String对象主要有三种方式: -...