JavaSE: 认识String类

认识String类

1. 创建字符串

// 方式一 
String str = "Hello Bit";
// 方式二 
String str2 = new String("Hello Bit");
// 方式三
char[] array = {'a', 'b', 'c'};
String str3 = new String(array);

2. 字符串比较相等

所有引用数据类型在比较是否相等时, 使用equals方法比较, JDK常用类, 都已经覆写了equles方法, 直接使用.

  • 引用数据类型使用==比较的仍然是数值(地址是否相等).
  • 不区分大小写的比较equalsIgnoreCase();

3. 字符串的常量池

当使用直接赋值法产生字符串对象时, JVM会维护一个字符串的常量池, 若该对象在堆中还不存在, 则产生一个新的字符串对象加入字符串常量池.
当继续使用直接赋值法产生字符串对象时, JVM发现该引用指向的内容在常量池中已经存在, 则此时不再新建字符串对象, 而是复用已有对象

  1. 直接赋值(使用String类就采用这个方法)
    String str1 = "hello" ;
    String str2 = "hello" ;
    String str3 = "hello" ;
    System.out.println(str1 == str2); // true
    
  2. 采用构造方法
    String str = new String("hello");
    -w500- 手工入池: String类提供的intern方法
    • 调用intern方法会将当前字符串引用指向的对象保存到字符串常量池中
    • 若当前常量池中已经存在了该对象, 则不再产生新对象, 返回常量池中的string对象
    • 若当前常量池中不存在该对象, 则将该对象入池, 返回入池后的地址

4. 字符串不可变性

所谓的字符串不可变指的是字符串对象的内容不能变, 而不是字符串引用不能变.

-w500
如何修改字符串的内容

  1. 在运行时通过反射破坏value数组的封装(反射是所有框架的基础)
  2. 更换使用StringBuilder或者StringBuffer类 - 已经不是一个类型了
    • 若需要频繁进行字符串的拼接, 使用StringBuilder类的append方法

5. 字符串的其它常见操作

  1. 字符串比较-w400

  2. 字符和字符串的相互转换

    • 字符串的内部实际上就是使用字符数组来储存
    • 通过构造方法
    • 部分数组转为字符串
    • 取出字符串中指定索引的字符
    • 将字符串转为字符数组返回
  3. 字符串和字节byte的相互转换
    -w500

  4. 字符串的查找(重要:1, 6, 8)
    -w500

  5. 字符串替换-w500

  6. 字符串拆分
    -w500

  7. 字符串截取
    -w500

  8. 其它常用方法
    -w500

StringBuffer 和 StringBuilder

由于String的不可更改特性,为了方便字符串的修改,提供StringBuffer和 StringBuilder类.这两个都是独立地类.

String和StringBuffer类不能直接转换。如果要想互相转换,可以采用如下原则:

  • String变为StringBuffer:利用StringBuffer的构造方法或append()方法
  • StringBuffer变为String:调用toString()方法。
  • StringBuilder的方法
    • 字符串反转: x.reverse();
    • 删除指定范围数据: x.delete(int start, int end);
    • 插入操作: insert(int start, 数据类型);

String, StringBuffer 和 StringBuilder的区别

  1. String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.
  2. StringBuffer与StringBuilder大部分功能是相似的
  3. StringBuffer采用同步处理,属于线程安全操作, 性能较差;而StringBuilder未采用同步处理,属于线程不安全操作, 性能较高.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值