String类以及字符串详解

目录

一、JDK中String类的声明

二、创建字符串的四种方式

1、直接赋值

2、通过String的构造方法产生对象

3、通过字符数组产生对象

4、通过String的静态方法valueOf(任意类型)

 三、String引用数据类型

1、字面量和字符串对象

 2、字符串的比较

3、关于字符串的常量池问题

​ 4、手工入池

 4、字符串的不可变性

5、如何修改字符串内容

五、字符串的其他常见操作

1、字符串比较

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

 (1)字符转换到字符串,通过字符串的构造方法

(2)字符转换到字符串,通过字符串的有参构造实现

(3)字符串到字符

 (4)将字符串中的内容转为字符数组(String->char[])

(5)判断一个字符串是否是纯数字组成

 (6)字符串和字节的相互转换

 (7)字符串到字符的转换

 (8)字符串查找操作

 (9)字符串替换

(10)字符串的拆分操作

(11)字符串截取处理

(12)字符串的其他操作方法

​ 六、相关代码


一、JDK中String类的声明

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {

String实现了多个接口,就具备了多种能力。

为什么String要用final修饰?

可以知道的是被final修饰的类无法被继承,所以String就不存在子类,这样的话就可以保证所有使用JDK的人,大家所用到的String类仅此一个。

二、创建字符串的四种方式

 String str1="hello world";
        String str2=new String("hello world");
        char[] arr={'a','b','c'};
        String str3=new String(arr);
        String str4=String.valueOf(10);

1、直接赋值

String str=''hello world'';

2、通过String的构造方法产生对象

String str2=new String(''hello world'');

3、通过字符数组产生对象

char[] arr=new char[]{'a','b','c'};

4、通过String的静态方法valueOf(任意类型)

String str=String.valueOf(10);

 三、String引用数据类型

1、字面量和字符串对象

String str=''hello world'';等号后面这一部分既是字面量,也是字符串对象。

 2、字符串的比较

所有引用数据类型在比较时,等号hi用equals方法比较,JDK的常用类都已经重写了equals方法,大家直接使用即可。引用数据类型使用“==”比较的是地址是否相等。

注意,当牵扯到用户输入时,一定要做判空处理

如果使用第一种比较方法就会出现空指针异常,因为我们要比较的特定内容本身就是字符串字面量,一定不是空对象,把要比较的内容放在equals的前面,就可以方便处理name为空的问题。

3、关于字符串的常量池问题

 可以发现,此第一个图中的str1,str2和str3使用“==”比较都返回了true,但是在第二个图中的又都返回了false,这是怎么回事呢?

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

4、手工入池

 public native String intern();

String类提供的intern方法:

调用intern方法会将当前字符串引用指向的对象保存到字符串常量池中

①若当前常量池中已经存在了该对象,则不在产生新的对象,返回常量池中的String对象

②若当前常量池中不存在该对象,则将该对象入池,返回入池后的地址

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值