双等号与equals区别及StringBuffer与StringBuilder区别及StringBuilder对String的优化
2012-08-17 14:26
537 查看
1、创建数组有三个步骤:声明、创建、初始化。
2、数组遍历 增强型:for(Object tem:s){}。
3、String为引用型数组和二维数组一样;String实质是一个字符(char)数组。
4、双等号和equals区别:
双等号:二进制的比较(地址)是同一个对象的比较。
equals:比较的是引用数据类型意义上相等(数值相等)当时不是同一对象(引用不同)。
Object类的equals相当于双等号。
5、String:如果不用new创建则在常量池中创建,也就是就说new一个String实际上创建了两个对象(在堆了和常量池中)。
String s = "he"+"llo"相当于String s = "hello"(变量折叠;语义分析系统自动优化)。
6、StringBuffer与StringBuilder区别:
StringBuffer:多线程;线程安全的;所用时间相对较长。
StringBuilder:单线程;线程不安全;所用时间相对较短。
两者都有:加字符串时用append()方法(是直接加进去没有再new出一个对象)。
例:StringBuffer sb = new StringBuffer("aaa");sb.append("bbb");系统没有new出一个"bbb"的对象在常量池中
而
则new了一个"bbb"的对象
所以String是不可变的StringBuilder和StringBuffer是可变的。
注意:当sb为null时StringBuffer空间有char[16](申明时就申请的空间)
sb.length 是求存的字符数那16是加对象进去的的。
7、StringBuilder对String的优化(java5.0之后是系统自动优化的)
"+"操作换成StringBuilder的append()方法
例:
反编译之后为
2、数组遍历 增强型:for(Object tem:s){}。
3、String为引用型数组和二维数组一样;String实质是一个字符(char)数组。
4、双等号和equals区别:
双等号:二进制的比较(地址)是同一个对象的比较。
equals:比较的是引用数据类型意义上相等(数值相等)当时不是同一对象(引用不同)。
Object类的equals相当于双等号。
5、String:如果不用new创建则在常量池中创建,也就是就说new一个String实际上创建了两个对象(在堆了和常量池中)。
String s = "he"+"llo"相当于String s = "hello"(变量折叠;语义分析系统自动优化)。
6、StringBuffer与StringBuilder区别:
StringBuffer:多线程;线程安全的;所用时间相对较长。
StringBuilder:单线程;线程不安全;所用时间相对较短。
两者都有:加字符串时用append()方法(是直接加进去没有再new出一个对象)。
例:StringBuffer sb = new StringBuffer("aaa");sb.append("bbb");系统没有new出一个"bbb"的对象在常量池中
而
String s = new String("aaa");s=s+"bbb";
则new了一个"bbb"的对象
所以String是不可变的StringBuilder和StringBuffer是可变的。
注意:当sb为null时StringBuffer空间有char[16](申明时就申请的空间)
sb.length 是求存的字符数那16是加对象进去的的。
7、StringBuilder对String的优化(java5.0之后是系统自动优化的)
"+"操作换成StringBuilder的append()方法
例:
String s1 = "I"; String s2 = s1+"like"; String s3 = s2+"java";
反编译之后为
String s1 = "I"; String s2 = (new StringBuilder(String.valueOf(s1))).append("like").toString(); String s3 = (new StringBuilder(String.valueOf(s2))).append("java").toString();这样就少了在常量池中的"like","java","I like","i like java"这些没用的中间对象了。
相关文章推荐
- equals与== 的区别 及 String,StringBuffer,StringBuilder的区别
- java核心API之String,StringBuffer和StringBuilder以及equals与==的区别和联系
- String,StringBuffer与StringBuilder的区别??
- Java 深入学习(8) —— String、StringBuilder、StringBuffer的区别
- String、StringBuffer与StringBuilder之间区别
- String与StringBuffer和StringBuilder之间的区别
- String,StringBuffer与StringBuilder的区别??
- JAVA中String与StringBuffer,StringBuilder的区别
- String,StringBuffer与StringBuilder的区别??
- Java中String、StringBuilder、StringBuffer的区别
- String,StringBuffer与StringBuilder的区别
- String,StringBuffer与StringBuilder的区别??
- String , StringBuffer ,StringBuilder之间的区别
- String、StringBuffer与StringBuilder之间区别
- String,StringBuffer与StringBuilder的区别
- Java中String、StringBuffer、StringBuilder的区别及面试经常出现的问
- String,StringBuilder,StringBuffer三者的区别
- 深入理解String,StringBuffer以及StringBuilder的区别
- StringBuilder与StringBuffer和String 的区别
- String ,StringBuffer 和 StringBuilder 区别