Java高级编程之常用类

1.String类

        1.1 String类概述

                String类是一个不变类,只要是改变原有String类的对象(常量除外)都会另新创建一个String类对象,不会对原有String对象造成任何影响

        1.2 String类对象的两种创建方式

                字面量

String str = "huang";

               new对象

String str1 = new String("huang");

        两种创建对象的区别:通过字面量的方式至多创建一次对象,通过new的方式至多创建两次对象至少创建一次对象

        内存图如下:

 首先在str创建的时候,它会检查常量池中是否存在huang,如果存在则直接将str指向huang,如果不存在,在常量池中开辟一块内存区域用来存储huang,并将str指向这块内存区域。因此字面量创建对象可以不创建新的对象,至多创建一次对象。其次,在创建str1的时候它会在堆内存中开辟一块内存区域,不管常量池中是否存在该对象,在创建完之后,如果常量池中存在该对象,则只需要创建一次对象,如果常量池中不存在该对象,那么就需要在常量池中开辟一块新的内存区域用于存储该对象。由此new对象的过程中最少创建一次对象,最多创建两次对象。

2.StringBuffer类

        2.1 StringBuffer概述

                StringBuffer是一个可变类,即该类对象的改变不用创建新的对象,只是他的底层会不断地扩容来满足空间需求,他是一个线程安全但效率不高的操作字符串的类

        2.1 StringBuffer的使用

                当频繁的对一个字符串作出修改时,涉及到线程安全时建议使用StringBuffer

3.StringBuilder

        3.1 StringBuilder概述

                StringBuilder同样是一个可变类,即该类对象的改变不用创建新的对象,只有他的底层会不断的扩容来满足空间需求,他是一个线程不安全但效率高的操作字符串的类

        3.2 StringBuilder的使用

                当频繁的对一个字符串作出修改时,不涉及到线程安全的问题时建议使用StringBuilder

4.String、StringBuffer、StringBuilder三者异同

       :都是用来对字符串进行操作,且底层都是用char型数组来存储数据

       :String类是一个不可变类,任何对象的改变都会创建一个新的对象。而StringBuffer和StringBuilder不需要。另StringBuffer是一个线程不安全,效率低的类,而StringBuilder是一个线程不安全,效率高的类。

                        

              

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值