string stringbuffer stringbuilder
来源:互联网 发布:电脑软件快捷键壁纸 编辑:程序博客网 时间:2024/05/22 15:07
equals 方法是 java.lang.Object 类的方法。
java虚拟机里有一个区域叫方法区,方法区里有一个常量区,如果你是String str = "abc",虚拟机认为“abc”是常量,放在常量区。下次你再定义String otherStr = “abc", 虚拟机并不新创建任何东西,而是连到刚才常量区里的”abc“,所以不管是equal还是==,都相等,因为值和地址都相等。 另外还有一个区域叫堆,如果String str = new String("abc"), 虚拟机会创建对象放到堆里,再String otherStr = new String("abc"),会在堆里放两个对象。所以==就是false,因为两个对象地址不同。
有两种用法说明:
(1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。
“==”比较两个变量本身的值,即两个对象在内存中的首地址。
“equals()”比较字符串中所包含的内容是否相同。
比如:
String s3 = "abc", s4 ="abc" ;
s1 = new String("abc");
s2 = new String("abc");
那么:
s1==s2 是 false //两个变量的内存地址不一样,也就是说它们指向的对象不 一样,
故不相等。
s1.equals(s2) 是 true //两个变量的所包含的内容是abc,故相等。
注意(1):
如果: StringBuffer s1 = new StringBuffer("a");
StringBuffer s2 = new StringBuffer("a");
结果: s1.equals(s2) //是false
解释:StringBuffer类中没有重新定义equals这个方法,因此这个方法就来自Object类,
而Object类中的equals方法是用来比较“地址”的,所以等于false.
注意(2):
对于s3和s4来说,有一点不一样要引起注意,由于s3和s4是两个字符
串常量所生成的变量,其中所存放的内存地址是相等的,
所以s3==s4是true(即使没有s3=s4这样一个赋值语句)
比较stringbuffer:
StringBuffer s3 = new StringBuffer("a");
StringBuffer s4 = new StringBuffer("a");
if (s3.toString().equals(s4.toString())) {
System.out.println("Yes");
} else {
System.out.println("No");
}
String类是不可变类,任何对String的改变都会引发新的String对象的生成;而StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象,可变和不可变类这一对对象已经齐全了,那么为什么还要引入新的StringBuilder类干吗?
如果我们的程序是在单线程下运行,或者是不必考虑到线程同步问题,我们应该优先使用StringBuilder类;当然,如果要保证线程安全,自然非StringBuffer莫属了
- String 、StringBuffer 和 StringBuilder
- String,StringBuffer,StringBuilder(转载)
- String、StringBuffer和StringBuilder
- String,StringBuffer,StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String StringBuffer StringBuilder
- String StringBuffer StringBuilder
- String StringBuffer StringBuilder
- String StringBuffer StringBuilder
- String ,StringBuffer ,StringBuilder问题
- String StringBuffer StringBuilder
- String StringBuffer StringBuilder 区别
- StringBuilder StringBuffer String
- StringBuilder。StringBuffer。String
- String,StringBuffer与StringBuilder
- String、StringBuffer和StringBuilder
- String, StringBuffer, StringBuilder区别
- 架构方法实践 - 客户端CAD工具范例 (三 详细架构部分)
- oracle导出excel
- canny变换中的自适应阈值方法实现
- Android 上传文件,图片。以及服务器端接收相关
- 【绝对给力】Android开发免豆资料(教程+工具+源码)下载地址汇总
- string stringbuffer stringbuilder
- Java编程之字符集问题研究
- microsoft incremental linker
- 定制SRAM的Avalon接口IP
- Windows Phone开发人员必看资料
- UISeachBar 常用方法
- python中常用的正则表达式
- timeit 模块
- Emacs中JDEE的配置