吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3403|回复: 8
收起左侧

[Java 转载] 【笔记】String和StringBuffer的区别

  [复制链接]
SinerW 发表于 2018-4-25 16:57
   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”)的结果为false  
ps:String类是final不能继承不能修改


   最近我也有在学习python,同时还在整理一些以前写的web项目,我觉得找个时间可以把写的比较完善的项目源码上传一下。这些笔记都是以前我在写项目是遇到bug,我摸清楚原理之后总结的。

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
wushaominkk + 1 按标题格式发帖!
Erdouing + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Erdouing 发表于 2018-4-25 17:19
今天刚好看到这个知识点 可以
O-NE 发表于 2018-4-25 17:23
头像被屏蔽
268296 发表于 2018-4-25 17:45
 楼主| SinerW 发表于 2018-4-26 08:33
O-NE 发表于 2018-4-25 17:23
这个就没必要发来吧,哪都有

好的,下次注意
有你便是晴天 发表于 2018-4-26 13:06
本帖最后由 有你便是晴天 于 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


你能分析一下吗?
 楼主| SinerW 发表于 2018-4-26 14:15
有你便是晴天 发表于 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。
liukai9401 发表于 2018-11-13 08:28
StringBuffer可以说是一个容器,还有一个容器是StringBuilder,相当于Spring容器,里面可以装多个class实体类,而StringBuffer/StringBuilder可以装多个String进行拼接组成一个新的String(当然最后要toString()方法),而且StringBuffer是线程安全的,但是效率低,而StringBuilder是线程不安全的,当然效率就比StringBuffer高,如果只是单线程运行,用StringBuilder比较好。
kungFuPander 发表于 2018-11-13 09:21
大佬受教了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 21:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表