java复习(5)—String、StringBuilder和StringBuffer
来源:互联网 发布:苹果在线软件下载 编辑:程序博客网 时间:2024/05/17 13:41
1.String类是不变字符串,StringBuffer类和StringBuilder类是可变字符串,这3种字符串都是16位的Unicode字符序列,并且这3个类都被声明为final类,因此不能被继承。
2.String str = new String("abc")创建实例的过程
首先在堆中(不是常量池)创建一个指定的对象"abc",并让str引用指向该对象;在字符串常量池中查看,是否存在内容为"abc"字符串对象;若存在,则将new出来的字符串对象与字符串常量池中的对象联系起来 ;若不存在,则在字符串常量池中创建一个内容为"abc"的字符串对象,并将堆中的对象与之联系起来。
3.String str = "abc"创建对象的过程
首先在常量池中查找是否存在内容为"abc"字符串对象;如果不存在则在常量池中创建"abc",并让str引用该对象;如果存在则直接让str引用该对象。
4.String str1 = "abc"; String str2 = "ab" + "c"; str1==str2?
true。因为String a="ab"+"c"会在编译时期已经进行优化,等价于String a = "abc";
5.String str1 = "abc"; String str2 = "ab"; String str3 = str2 + "c"; str1==str3?
false。因为String str3 = str2 + "c"涉及到变量(不全是常量)的相加,所以会生成新的对象,其内部实现是先new一个StringBuilder,然后 append(str2),append("c");然后让str3引用toString()返回的对象。
6.StringBuilder与 StringBuffer
StringBuilder:线程非安全的
StringBuffer:线程安全的
当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。
7.对于三者使用的总结: 1.如果要操作不改变的字符串= String
2.单线程操作字符串缓冲区 下操作经常改变的字符串 = StringBuilder
3.多线程操作字符串缓冲区 下操作经常改变的字符串 = StringBuffer
- java复习(5)—String、StringBuilder和StringBuffer
- java基础知识—String、StringBuffer和StringBuilder
- Java(5):基础:String、StringBuffer和StringBuilder的区别
- java String,StringBuffer和StringBuilder
- java String,StringBuffer和StringBuilder
- Java String、StringBuffer和StringBuilder
- [Java]String、StringBuilder和StringBuffer
- 【Java String】String、StringBuffer和StringBuilder
- #5JAVA字符串StringBuffer 和StringBuilder和 String #
- java中String和StringBuffer和StringBuilder
- String、StringBuffer与StringBuilder之间区别-----(java复习)
- java基础——String,StringBuffer和StringBuilder
- 【java】——String、 StringBuffer和StringBuilder的区别
- 深入java String拼接和StringBuffer、StringBuilder(分析源码)
- Java中的字符串 String, StringBuffer和StringBuilder
- java中String和StringBuffer、StringBuilder
- java-String StringBuffer和StringBuilder的区别
- Java:String、StringBuffer和StringBuilder的区别
- [数据结构]二叉查找树-基础版
- Freemarker中Configuration的setClassForTemplateLoading方法参数问题
- 策略模式
- Jmeter带cookie请求
- Lua 教程-04
- java复习(5)—String、StringBuilder和StringBuffer
- Git merge和git branch 分支与合并
- php Session 跨页面就读不出来怎么办呢
- Android的Camera用SurfaceView拍照
- Menu和Dialog小结
- 102. Binary Tree Level Order Traversal
- 模板方法模式
- Redis快速入门:初识Redis
- chrom调试技巧大全,史上最全