# java201903028 **Repository Path**: GUOSD/java201903028 ## Basic Information - **Project Name**: java201903028 - **Description**: 字符串 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-04-13 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # java201903028 #### 介绍 字符串 ####笔记 1. 字符串的存储模型 、、、、 1.1字符串的初始化赋值方式 字符串可以通过直接赋值为字符串常亮;(直接给定字符串就是字符串常亮 字符串可以通过使用new String(“初始化字符串”)方式进行初始化赋值 1.2字符串在内存中的储存方式 java中常亮都是存放在常量池中的(栈结构),且常量池中的常亮不重复; java中使用new创建的对象都是存放在堆中的,并且每调用一次new就会分配一块新的内存空间(new时进行内存空间分配操作的) String字符串常量存放在字符串常量池中,且字符串常量池中常量不重复;(过滤重复) String使用new进行初始化的变量都是存放在堆中的,堆中的对象内容可以重复; 所以,根据字符串的初始化方式不同,存放位置也不同: 存放在字符串常量池中(栈结构); 常量初始化的字符串; 存放在内存堆中(堆结构): 使用new初始化的字符串;使用+拼接的字符串 注意: 如果是两个字符串常量使用+拼接,结果还是字符串常量,放在字符串常量池中,除此之外都是放在堆中的; 解析: 代码 String str2=new String("小明");执行过程: 构造参数“小明”是一个字符串常量,先将其存放在字符串常量池中; 使用new在堆中分配一块内存空间; 将字符串常量池中的常量“小明”拷贝到new分配的内存空间中; 注意:该行代码在内存中创建了2个对象,一个在字符串常量池中,一个在堆中; 2. StringBuffer和StringBuildder类 、、、、 2.1StringBuildder和StringBuffer类 StringBuilder是String类的工具类 常用的方法就是字符串拼接方法; 可变长的字符串处理类,默认长度为16; StringBuffer是StringBuilder线程安全类; +和StringBuffer的拼接方法之间的区别: 因为StringBuilder是可变长的字符串; +是将两个不可变长字符串进行拼接,每次都需要申请新的存储空间; 总结: 如果进行频繁的字符串拼接操作,优先使用StringBuilder进行处理 因为+每次都需要申请新的内存空间; 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)