String字符串关于==的详解

String详解

字符创建方式

字符串创建有两种方式

  • String s = new String("myString");
  • String string2 = "myString";

    创建过程解析

    方式一创建时,先解析字符串常量"myString",它会在常量池里面的一个字符串常量列表中查找,如果没有找到,在堆里面创建一个包含字符序列(myString)的String对象s1,然后把这个String对象的字符序列和引用作为名值对存放到常量池里面的字符床常量列表中。如下图所示:

    接下里就在堆里面再创建一个包含字符序列(myString)的String对象,并让s指向它。
    方式2创建时,先解析字符串常量池里面的字符串常量列表,如果找到了就直接包表中对于的对象引用返回。所以string2和s1指向的是堆里的同一个对象。

intern方法

  • 如果这个String对象的字符序列不在字符床常量列表中,那么就会把这个String对象的字符序列和引用以名值对的形式放入列表中,并返回一个指向String对象本身的引用。
  • 如果这个String对象的字符序列在字符串常量列表中,那么就会返回常量列表中相同字符序列对应的对象引用。
        String s3 = new String("gouzi");
        String s4 = "gouzi";
        System.out.println(s3.intern() == s4);

引用地址

引用链接
如有侵权,告之立删。

原文地址:https://www.cnblogs.com/dearcabbage/p/10602767.html

时间: 2024-08-30 03:56:35

String字符串关于==的详解的相关文章

Python学习入门教程,字符串函数扩充详解

因有用户反映,在基础文章对字符串函数的讲解太过少,故写一篇文章详细讲解一下常用字符串函数.本文章是对:程序员带你十天快速入门Python,玩转电脑软件开发(三)中字符串函数的详解与扩充. 如果您想学习并参与本教程的完善与写作.请在下方讨论区,回复相关问题.一起完善本文章教程的书写. Python字符串常用函数. 声明字符串变量: str = ‘关注做全栈攻城狮,写代码也要读书,爱全栈,更爱生活.’ 下面所有字符串函数函数,是对变量str进行操作: 求字符串长度: 函数使用: 运行结果: 值得注意

java中的String类常量池详解

test1: package StringTest; public class test1 { /** * @param args */ public static void main(String[] args){ String a = "a1"; String b = "a"+ 1; System.out.println(a==b); }//true } test2: package StringTest; public class test2 { /** *

String.format()【示例详解】

整理者:Vashon 前言: String.format 作为文本处理工具,为我们提供强大而丰富的字符串格式化功能,为了不止步于简单调用 String.format("Hello %s", "Vashon"); ,下面将笔记整理并记录下来. 方法重载: // 使用当前本地区域对象(Locale.getDefault())格式化字符串 String String.format(String fmt, Object... args); // 自定义本地区域对象格式化字符

字符串函数---memcpy()详解及实现(完整版)

一.memcpy()函数详解 1.函数原型 memcpy():void *memcpy(void *dest,const void *src,size_t count); dest:新缓冲区. src:复制的缓冲区. count:要复制的字符数. 说明:如果源和目标字符串重叠,则 memcpy 的行为未定义.(来自与msdn上面的解释) 2.对memcpy()函数的测试 (1)通过以下例子可以看到,memcpy()函数将数组a前9个字符拷贝给了数组b,数组b后面没有加'\0',故一般要记得对数组

Python数据类型方法简介一————字符串的用法详解

符串是Python中的重要的数据类型之一,并且字符串是不可修改的. 字符串就是引号(单.双和三引号)之间的字符集合.(字符串必须在引号之内,引号必须成对) 注:单.双和三引号在使用上并无太大的区别: 引号之间可以采取交叉使用的方式避免过多转义: 单.双引号实现换行必须使用续行符,而三引号可直接续行不必使用续行符号. a. count,统计字符或子字符串在字符串中出现的次数 格式:S.count(sub[, start[, end]]) -> int sub 是字符串中要查询的子字符串  star

str(字符串)功能详解

class str(basestring):    """    str(object='') -> string        Return a nice string representation of the object.    If the argument is a string, the return value is the same object.    """    def capitalize(self):      

String的Intern方法详解

引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String.这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念.常量池就类似一个JAVA系统级别提供的缓存.8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊.它的主要使用方法有两种: 直接使用双引号声明出来的String对象会直接存储在常量池中. 如果不是用双引号声明的String对象,可以使用String提供的intern方法.intern 方法会从字符串常量池中查询当前字符串是否存在,

字符串分割问题详解

DionysosLai 20150817 前段时间,有个需求,要求对一串字符串进行单个字符分割.比如"今天是情人节!",分割结果是"今"."天"."是"."是"."情"."人"."节"."!".由于字符串中,包含了中英文,特殊字符等,而每个字符并不是统一字节编码,比方说英文是单个字节编码,中文是二个字节编码了.因此,有必要判断是

php中几个字符串替换函数详解

在php中字符替换函数有几个如有:str_replace.substr_replace.preg_replace.preg_split.str_split等函数,下面我来给大家总结介绍介绍. 一.str_replace(find,replace,string,count) 作用:str_replace() 函数使用一个字符串替换字符串中的另一些字符. 参数 描述find 必需.规定要查找的值.replace 必需.规定替换 find 中的值的值.string 必需.规定被搜索的字符串.count