StringBuffer,StringBuilder区别是啥
这是一个历史悠久,并且至今仍在困扰很多程序员的问题。
这是个字符串内存管理策略问题。
几十年前 在C和Pascal的时代,就有字符串存储形式 是 \0 结尾还是 长度+内容的争论,这个问题严重影响了API的设计,内存的管理,甚至程序架构。
字符串是一种非常常用的 生命周期通常很短的对象,而且它的size是不固定的,长度为 1 或 1GB都有可能,导致内存管理非常麻烦复杂。
用长度+内容表示,每个串都要额外付出4个字节,用\0结尾吧,算长度就很麻烦,万一结尾忘了\0就要崩溃,选哪个好
字符串的长度放哪里,放到起始指针的位置,还是起始指针的前面
如果放前面,那么字符串起始指针和内存块起始不一致怎么解决
字符串拼接的时候把源串复制到目标串结尾,那么目标串剩余内存不够怎么办,重新分配要多一次赋值,频繁拼接性能有问题怎么办
函数返回值如果是字符串,那么这个串是调用者分配内存还是被调用者分配,谁来负责释放。
如果调用者分配,那么调用者怎么知道字符串将有多长。
频繁分配释放大小各异的字符串,会不会导致内存碎片化
对于小字符串是分配在堆上还是栈上
怎么把常量串和变量串分别处理
如果设计面向对象的字符串,字符串加法怎么定义,是在原来对象上加,还是生成一个新对象
如果每加一次都生成新对象会不会导致构造析构太频繁
如果是托管语言会不会太频繁GC
要不要设计单独的辅助类来解决字符串拼接问题
那这个辅助类怎么设计,要不要考虑线程安全
如果考虑线程安全的话,怎么兼顾性能
有帮到你的点赞、收藏一下吧
需要更多教程,微信扫码即可
StringBuffer,StringBuilder区别是啥相关推荐
- 国内Java面试总是问StringBuffer,StringBuilder区别是啥?档次为什么这么低?
这是一个知乎上面很火的问题(https://www.zhihu.com/question/50211894 ),下面是我关于这个问题的回答,截止今天,这个答案收获了500+赞和70+评论. 原答案 这 ...
- 原创|国内Java面试总是问StringBuffer,StringBuilder区别是啥?档次为什么这么低?...
△Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 224 篇原创分享 作者 l Hollis 来源 l Hollis(ID:hollischuang) 这是一个知乎上面很火 ...
- 国内Java面试总是问StringBuffer,StringBuilder区别是啥?
原答案 这个问题只是开个场,热个身而已啊. StringBuffer,StringBuilder区别是啥? 什么是线程安全? 如何保证线程安全? 什么是锁?死锁? synchronized的实现原理是 ...
- 浅谈 Java 字符串(String, StringBuffer, StringBuilder)
我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...
- 面试(2)——StringBuffer StringBuilder String /==与equals
最近有小伙伴问我面试的时候,经常会问些什么问题,其实面试的时候,面试官无非就是面试一些基础,怎么问呢,就是会根据你简历上所写的技术点进行询问,由浅到深.你可能会说,那这样我面试的时候少写一些,那问你的 ...
- String, StringBuffer,StringBuilder
String, StringBuffer,StringBuilder的区别 java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,都实现了CharSe ...
- String StringBuffer StringBuilder区别与联系
String StringBuffer StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量 ...
- String StringBuffer StringBuilder的区别
简单的事情做到极致也是一种能力. 首先,说一下目前我还没进行整理的情况下,我的理解: String 不可修改 修改后相当于又新创建创建一个字符串 比如: String a = "abc&qu ...
- Java中的String,StringBuffer,StringBuilder有什么区别?
相信有很多同学都是经常使用String的,或者也或多或少的听说过StringBuffer,StringBuilder,那么在经常遇见的面试题中(标题),到底这三个的区别是什么呢?让我们来一探究竟! S ...
- String,StringBuffer,StringBuilder三者的异同
String,StringBuffer,StringBuilder三者的异同:? String:不可变的字符序列;底层使用char[]存储(用final修饰) StringBuffer:可变的字符序列 ...
最新文章
- 不写代码,用图形界面搞机器学习:MIT发布“全球最快AutoML”,刷新DARPA比赛成绩...
- android 自定义apk名,Android Studio多渠道打包、自定义打包APK名称
- python socket tcp_python socket 模拟tcp通讯
- PAT (Basic Level) Practice (中文)1012 数字分类 (20 分)
- 写出一段代码将链表中的两个节点位置互换位置_面试 leetcode 算法专题系列(二)—— 链表...
- Jupyter notebook 导入和卸载 conda 虚拟环境
- QT学习笔记(七):定时器事件的3种常用使用方式
- hbase-1.3.2安装
- 2000以内!一加Nord 2渲染图曝光:搭载联发科天玑1200
- 天津市全国计算机等级报名时间,天津市2018年全国计算机等级考试报名时间及地点...
- 硬盘GPT分区与MBR分区的区别
- Python-----列表,字典,集合生成式,生成器
- 压缩文件下载后无法打开问题解决方法
- 腾讯校招智力题-赛马问题-毒药与老鼠
- 2019支付宝小程序技术专场招募
- 超搜索引擎BBMAO
- 初学者习字如何选择练字用的辅助格子纸?
- 关于redis服务的代码编码
- 2023山西大学计算机考研信息汇总
- ccf试题1:数列分段
热门文章
- 一加8系列获得认证:骁龙865加持 离上市又近一步
- 华为Mate X 5G再次秒售罄;全新折叠屏手机渲染图曝光:确实不一般!
- 11.11京东全球好物节战报出炉!苹果、华为全员卖疯...
- 交付量强劲增长 特斯拉营收却将出现7年来首次下滑
- 已经人均5G了?5G手机没人买,iPhone 11没5G该不该被嘲讽?
- 华为方舟编译器正式上线 已经拥有45家合作伙伴
- 上市在即!华为Mate 20 X 5G版证件照公布:国行首款5G手机
- 网易回应“公开叫卖网易邮箱账号”:不涉及用户敏感信息
- Android 完整漂亮问卷、试卷 -- 支持单选、判断、不定项
- Java基础整理(二)