当前位置: 首页 > news >正文

Java String对象创建过程

1. String 类的对象创建

2. String 类的构造方法

——String() 
初始化新创建的 String对象,使其表示空字符序列。

例如:

String s = new String();

// s = null;

——String(char[] value) 
分配一个新的 String ,以便它表示当前包含在字符数组参数中的字符序列。

例如:

char value[] = {'a','b','c','d'};

String s = new String(value); 

// s = "abcd";

—— String(StringBuilder builder) 
分配一个新的字符串,其中包含当前包含在字符串构建器参数中的字符序列。

——String(StringBuffer buffer) 
分配一个新的字符串,其中包含当前包含在字符串缓冲区参数中的字符序列。

3. String类对象创建过程中的内存分配

字符串的两种实例化方式及其差别

1).String str = “abc”;

2).String str = new String(“abc”);

Java运行时会维护一个String Pool(String池), 也叫“字符串区”。String池用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。而一般对象不存在这个缓冲池,并且创建的对象仅仅存在于方法的堆栈区。

例1:

String name = "张三";

String names = new String("张三");

System.out.println(name == names);

// 输出结果为false;即name 的地址指向与 names的地址指向不一致

 如上图所示,name在创建的过程中,地址直接指向字符串常量池的"张三";    names在创建的过程中,在堆中创建一个对象,names的地址指向对象,对象的地址指向字符串常量池的"张三"。

例2:

String s1 = new String("张三");

String s2 = s1;

System.out.println(name == names); //在 Java 中,对于引用类型,==运算符比较的是两个变量所指向的对象的引用(也就是内存地址),而不是对象的内容。

// 输出结果为true;即name 的地址指向与 names的地址指向一致

  • 首先,在字符串常量池中会检查是否有"张三"这个字符串常量。如果没有,就会在字符串常量池中创建一个"张三"的字符串常量对象。
  • 然后,new String()操作会在堆内存中创建一个新的String对象,这个对象的内容是指向字符串常量池中的"张三"字符串(通过字符数组引用等方式)。此时,s1变量指向的是堆内存中这个新创建的String对象。
  • 接着,String s2 = s1;这行代码执行时,s2变量被赋值为s1的值。在 Java 中,对象变量存储的是对象的引用(即对象在内存中的地址)。所以s2现在也指向了堆内存中s1所指向的那个String对象。

相关文章:

  • Rk3568平台通过Jni读取摄像头当前状态值实践案例
  • 【一览表】病理图像处理流程
  • Linux:进程的创建进程的终止
  • ShenNiusModularity项目源码学习(21:ShenNius.Admin.Mvc项目分析-6)
  • 12N60-ASEMI无人机专用功率器件12N60
  • 【多智能体系统组织方式解析】五大架构赋能智能协作
  • 【办公类-89-02】20250424会议记录模版WORD自动添加空格补全下划线
  • Java 调用webservice接口输出xml自动转义
  • std::unorderd_map 简介
  • NestJS——使用TypeORM操作数据库、增删改查、关联查询、QueryBuilder
  • 黑马 redis面试篇笔记
  • ROS-真机向虚拟机器人映射
  • zip是 Python 中 `zip` 函数的一个用法
  • PageView 内嵌套 TabBarView 的滑动冲突
  • 【C++指南】位运算知识详解
  • 利用软件I2C驱动OLED,点亮、熄灭OLED屏幕以及获取当前OLED屏幕开启状态
  • 【蓝桥杯】水质检测
  • 基于大语言模型的AI智能体开发:构建具备工具使用能力的智能助手
  • 一行命令打开iOS模拟器
  • [C] 第6章 C51函数
  • 一周人物|卡鲁等入围英国特纳奖,李学明新展中国美术馆
  • 中介在网上非法贩婴“一个孩子8.5万元”?丹阳警方介入
  • 王一博赛车故障退赛冲上热搜,工作室回应:下次再战
  • 关键词看中国经济“一季报”:稳,开局良好看信心
  • 2025年上海空间信息大会举行,重大项目集中签约
  • 游戏论|迟来的忍者与武士:从《刺客信条:影》论多元话语的争议