Strng的特性笔记

下面的内容我将会对String的一些特性进行列举,顺便将String与StringBuffer、StringBuilder进行对比

String

1.String是Java中不可变的对象。
2.创建String的主要方法有两种:String str = "abc" 或者 String str = new String("abc");
3.当String的创建方式为直接用引号时,Java会首先在JVM的字符串常量池中搜索是否还有相同值的字符串,如果有就直接返回这个字符串的引用,否则就新建一个新的字符串并将该字符串放入常量池中。
通过这种方式,JVM可以节省一定的内存,但是当使用new关键字的时候,jvm会直接在堆创建一个新的对象
4.String之间可以通过“+”号实现两个字符串的连接功能,其内部是通过StringBuffer完成这个操作的
5.String重写了equals()和hashCode()两个方法。只有当两个字符串的字符和字符顺序相同时,两个字符串的哈希值才会相同。String是不可变对象,且String内部的属性除了hash属性,其他都是final修饰的。
6.hash属性是由String属性中其他final属性计算出来的,因此每次hashCode()被调用的时候,该方法会返回同一个值缓存的hash变量值。
7.Java内部采用的是Unicode编码,因此无论什么字符都可以用两个字节表示。由于两个字节占16位,因此也叫 UTF-16。每两个字节表示一个字符可以简化字符串操作

String、StringBuffer和StringBuilder

1.首先,String这个变量是不可变的,而另外两个是可变的。
2.StringBuffer是线程安全和线程同步的。StringBuilder则不是。由于这个原因,StringBuilder操作字符串的时候回比StringBuffer效率更高。

另外,关于这个我可以身边同学告诉我老是忘记哪个是线程安全哪个不是,这里给大家介绍下一个记忆的方法。我们都知道Concurrence是并发的意思,然后这三个单词StringBuilder、StringBuffer、Concurrence都有一个英文字母U,我们只要记住并发的单词U的发音是ʌ 然后并发的StringBuffer也是这一个,联想一下就能记下来啦。

3.StringBuilder是在JAVA1.5 之后推出的,目的就是为了解决StringBuffer在日常编程中用处不大,但是实现并影响效率,因此推出了非并发的StringBuilder.

关于String的知识就这么多,想起啊来了再补充,也欢迎大家指正。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值