【笔记】String和StringBuffer的区别
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。另外,String实现了equals方法,new String(“abc”).equals(new String(“abc”)的结果为true,而StringBuffer没有实现equals方法,所以,new StringBuffer(“abc”).equals(new StringBuffer(“abc”)的结果为falseps:String类是final不能继承不能修改
最近我也有在学习python,同时还在整理一些以前写的web项目,我觉得找个时间可以把写的比较完善的项目源码上传一下。这些笔记都是以前我在写项目是遇到bug,我摸清楚原理之后总结的。
今天刚好看到这个知识点 可以 这个就没必要发来吧,哪都有 O-NE 发表于 2018-4-25 17:23
这个就没必要发来吧,哪都有
好的,下次注意 本帖最后由 有你便是晴天 于 2018-4-26 13:11 编辑
String a = "123";
String b = "4";
String c = "1234";
System.out.println(c == (a+b));
结果为false
String s1="a"+"b"+"c";String s2="abc";System.out.println(s1==s2);
结果为 true
你能分析一下吗? 有你便是晴天 发表于 2018-4-26 13:06
String a = "123";
String b = "4";
String c = "1234";
首先==比较的是两个String字符串的地址值 equals方法比较的是两个字符串的值,第一个结果为false是因为c和a+b虽然他们的值一样,但是因为a,b,c分别是三个不同的String,所以他们的地址值不一样。第二个为true的那个,虽然s1的值是abc拼接的,但是s1的值还是“abc”。s2定义的时候直接就已经定义为“abc”了,所以s1和s2这两个值被分配的内存地址值是相同的,所以是true。 StringBuffer可以说是一个容器,还有一个容器是StringBuilder,相当于Spring容器,里面可以装多个class实体类,而StringBuffer/StringBuilder可以装多个String进行拼接组成一个新的String(当然最后要toString()方法),而且StringBuffer是线程安全的,但是效率低,而StringBuilder是线程不安全的,当然效率就比StringBuffer高,如果只是单线程运行,用StringBuilder比较好。 大佬受教了
页:
[1]