JAVA零基础入学(2)关于String类型的总结

本文详细介绍了Java中String、StringBuffer和StringBuilder的区别。StringBuffer是线程安全的,适合多线程环境,而StringBuilder则在单线程环境中更优。此外,文章还列举了String的常见构造方法,并解释了它们为何可变,以及字符串常量池的概念。最后,强调了String是引用数据类型,其值不可变,每次修改都会创建新的对象。
摘要由CSDN通过智能技术生成

1,首先来说的第一个问题就是一道面试题,这是我学Sting类型这一块的时候接触到的第一个面试题,印象比较深,在我刚开始去面试的时候也被问到这样一个问题。

StringBuffer和StringBuilder的区别?

    StringBuffer中的方法都有:synchronized关键字修饰。表示StringBuffer在多线程环境下运行是安全的。

    StringBuilder中的方法都没有:synchronized关键字修饰,表示StringBuilder在多线程环境下运行是不安全的。 

    StringBuffer是线程安全的。

    StringBuilder是非线程安全的。

2,String中常用的构造方法

 *  第一个:String s = new String("");

 *  第二个:String s = ""; 最常用

 *  第三个:String s = new String(char数组);

 *  第四个:String s = new String(char数组,起始下标,长度);

 *  第五个:String s = new String(byte数组);

 *  第六个:String s = new String(byte数组,起始下标,长度)

3,StringBuilder/StringBuffer为什么是可变的呢?

  StringBuffer/StringBuilder内部实际上是一个byte[]数组, 这个byte[]数组没有被final修饰,StringBuffer/StringBuilder的初始,容量是16,当存满之后会进行扩容,底层调用了数组拷贝的方法,System.arraycopy()...是这样扩容的。所以StringBuilder/StringBuffer适合于使用字符串的频繁拼接操作。

4,String中的一些基本的概念:

4.1 String不是基本数据类型,是引用数据类型

4.2Java中规定用双引号括起来的字符串从出生到死亡是不可以变得

4.3字符串都是储存在字符串常量池当中(原因:因为字符串在使用过程中非常的频繁,所以为了提高效率,所以把字符串放到方法区的字符串常量池当中)、

4.5凡是用双引号括起来的字符串在字符串常量池当中都有一份

  4.6// s变量中保存的是字符串对象的内存地址。

        // s引用中保存的不是"abc",是0x1111

        // 而0x1111是"abc"字符串对象在“字符串常量池”当中的内存地址。

        String s = "abc";

这只是我所想到这一部分,欢迎各位大神指正与补充。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值