String类

1、常用方法

1-1 字符串构造

-> 使用常量字符串构造;

-> 直接new String 对象;

-> 借助字符数组进行构造;

 

 -> String是引用类型,内部并不存储字符串本身;

-> 用双引号" "括起来的,也是String类型的对象;

1-2 String对象的比较 

(1) ==的使用作用不同:

对于基本数据类型,==比较的是变量中的值是否相等

对于引用数据类型,==比较的是引用中的地址,即两个变量引用的是否为同一个对象

 (2)equals()方法:

        字符串中逐个字符进行大小比较【按照字母顺序】,返回true/false

(3)compareTo()方法:

        如果出现不相等的字符,返回两个字符大小的差值,返回int类型;

        如果前n个字符相等(n为两个比较的字符串的最小长度),则返回两字符串长度的差值。

(4)compareToIngoreCase()方法:

        与compareTo()方法一致,但是忽略大小写变化。

1-3 字符串的查找

-> char charAt(int   i): 返回  i 位置的字符

-> int indexOf(char  ch): 返回 ch第一次出现的位置

~ ~ ~

1-4 字符串之间的转换

(1)数值与字符串转换

valueOf()

eg1:数字转字符串

 eg2:字符串转数字

parseInt/parseDouble :将字符串解析为数值

 (2)大小写转换

        并不改变字符串本身的大小写,而是产生了一个新的对象

        t​oUpperCase​​​​​​,toLowerCase

 (3)字符串转数组

        toCharArray()

 (4)格式化        

        String.format();

 (5)字符串替换

        replace();replaceAll();   replaceFirst()

 由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串.

 (6)字符串拆分

        split()

       

 

-> 字符 "|","*","+"都需要加上转义字符,即在前面加 \\; 

-> 如果要按"\"进行切分,必须写成" \\\\";

-> 如果一个字符串有多个分隔符,可用" | "作为连字符

(7)字符串截取

        String substring(int beginIndex)

        String substring(int beginIndex, int endIndex)  【 范围:前闭后开

2、字符串常量池(StringTable)

        当第二次存储该字符串时,先会去常量池检查是否存在该字符串,有则返回,没有则创建。这样就不会频繁的创建对象,节省时间。

        程序运行速度也会更快,节省内存。

(1) 使用字符串常量进行赋值

        加载字节码文件时,“hello”字符串已经创建好并保存在常量池中。

        当用如下方法创建String对象时,在常量池中找到了,就把字符串的引用赋给s1,s2对象。

(2) 通过new创建String类对象

        new的对象,均是唯一的。

  (3)intern方法  
        intern()  动将创建的 String 对象添加到常量池中
        eg:s1.intern(),检查s1指向的对象是否存在于常量池中,不存在则把当前对象入池;存在则返回常量池的对象。

3、字符串的不可变性

-> 优点:方便实现字符串对象池。如果是可变的话,就得考虑写实拷贝的问题;不可变对象是线程安全的;不可变对象方便缓存hashcode,作为 key 时可以更高效的保存到 HashMap 中。

-> 用final修饰类,表示类不能被继承了;

    用final修饰引用类型,表明该引用变量不能引用其他对象,但是其引用对象中的内容可以修改。

4、字符串修改

所有的修改都会创建新的对象,效率低下。

尽量避免对 String 的直接需要,如果要修改建议尽量 使用StringBuffer 或者StringBuilder

4-1 StringBuilder和StringBuffer

        -> String和 StringBuilder 最大的区别在于 String 的内容无法修改,而 StringBuilder 的内容可
以修改。频繁修改字符串的情况考虑使用StringBuilder。
        -> String和 StringBuilder 类不能直接转换。如果要想互相转换,可以采用如下原则 :
        String变为 StringBuilder: 利用 StringBuilder 的构造方法或 append() 方法;
        StringBuilder变为 String: 调用toString()方法

        -> StringBuffer是线程安全的,StringBuilder不是。但两者作用类似。

4-2 String,StringBuilder和StringBuffer的区别

(1)String的内容不能修改,但是StringBuilder,StringBuffer内容可以修改

(2)StringBuilder,StringBuffer大部分功能相似

(3)StringBuffer采用同步处理,属于线程安全操作

(41条消息) StringBuffer和StringBuilder区别详解(Java面试)_辰兮要努力的博客-CSDN博客_stringbuffer和stringbuilder的区别https://blog.csdn.net/weixin_45393094/article/details/104526603

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值