String、StingBuffer、StringBuilder

文章目录

一、String的使用

二、 String、StingBuffer、StringBuilder三者异同

一、String的使用

  • 1、String声明为final的,不可继承
  • 2、String实现了Serializable接口:表示字符串是支持序列化的
    实现了Comparalbe接口:表示String可以比较大小
  • 3、String内部定义了final char[] value 用于存储字符串数据
  • 4、String:不可变的字符序列
  • 5、字面量的方式赋值,声明在字符串常量池中

String的实例化方式:

  • 方式一:字面量定义
  • 方式二:new+构造器

提问:String s = new String("abc");方式创建对象,在内存中创建了几个对象?

  • 两个:一个是堆空间中new结构,另一个是char[]对应常量池中的数据“abc”;

String 与 char[]之间的转换

  • String -->char[] : 调用String的toCharArray()
  • char[ ] -->String : 调用String的构造器

String 与 byte[]之间的转换

  • 编码:String -->byte[]:调用String的getBytes()
  • 解码:byte[] -->String:调用String的构造器

字符串--->字节(字符集必须一致)

  • 1、常量与常量的拼接结果在常量池、
  • 2、只要其中一个是变量,结果就在堆中
  • 3、拼接结果调用intern()方法,返回值在常量池中
    在这里插入图片描述

二、String、StingBuffer、StringBuilder三者异同

  • String:不可变,底层用char[ ]存储
  • StringBuffer:可变,线程安全,效率低初始容量为16的缓冲区,底层用char[ ]存储
  • StringBuilder:可变,jdk5新增的,线程不安全,效率高,底层用char[ ]存储

总结:

  • 增:append(XXX)
  • 删:delete(int start,int end)
  • 改:setCharAt(int n,char ch)/replace(int start,int end,String str)
  • 查:charAt(int n)
  • 插:insert(int offset,XXX)
  • 长度:Length();
  • 遍历:for()+charAt()/toString()
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页