String类

String类代表字符串。Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。

字符串不变;它们的值在创建后不能被更改。字符串缓冲区支持可变字符串。因为String对象是不可变的,它们可以被共享。

一、创建

1.显式创建,String str=new String("aaa"),每次创建都会在堆中创建一个新对象

2.隐式创建:String str="aaa",先在栈中创建字符串对象的引用变量,在创建字符串对象之前,先在字符串常量池中匹配,若有对应的,直接引用,否则在常量池中添加新内容再引用。

二、相等比较

1.equals():比较字符串内容是否相等

2.equalsIgnoreCase():忽略字母大小写来比较字符串内容是否相等

三、不可变性

在修改字符串内容时,会重新创建一个字符串对象,通过查找String类的源代码可以得知,String类型本身是由一个叫做value[ ]的字符数组,存在String类中,而且由final修饰并且封装,不可变,而且也没有相关的getter和setter方法。

String源码:

四、String的构造方法

.getBytes()将字符串转为byte数组

.toCharArray()将字符串转为char数组

五、String的判断功能

boolean equals(Object obj) 重写Obejct类中的方法,判断内容是否相等

boolean equalsIgnoreCase(String str) 不区分大小写 验证码

boolean contains(String str) 是否包含某个指定子串

boolean isEmpty() 判断是否为空 ""

boolean startsWith(String prefix) 判断是否以指定的子串开头

boolean endsWith(String suffix)判断是否以指定的子串结尾

boolean compareTo(String anotherString) 两个字符串之间按照编码大小比较

结果:

六、String的获取功能

int length() 获取长度

char charAt(int index) 获取指定位置的字符

int indexOf(String str) 获取指定字符首次出现的位置

int indexOf(String str,int fromIndex) 从指定的位置开始查找字符首次出现的位置

String substring(int startIndex) 截取字符串,从指定的位置开始,截取到最后一位

String substring(int startIndex,int endndex) 截取字符串,从指定的位置开始,到指定位置(endndex-1)结束

七、String的转换功能

byte[] getBytes() 将字符串转为byte数组

char[] toCharArray() 将字符串转为char数组

static String valueOf(char[] chs) 将char数组转为字符串

String toLowerCase() 英文字母转小写

String toUpperCase() 英文字母转大写

String concat(String str) 连接另一个字符串,返回一个新的字符串

Stirng[] split(分割符); 按照指定的规则,将字符串拆分为数组

八、String的替换功能

String replace(char old,char new)

String replace(String old,String new) 用新的字符串替换指定的所有的子串

replaceAll(String regex, String replacement)用新的字符串替换指定的所有的子串,使用正则表达式匹配

replaceFirt(String sregex, String replacement) 用新的字符串替换指定的第一个出现的子串,使用正则表达式匹配

String trim() 去除字符串两端空格,中间空格不能去除的

九、正则表达式

十、StringBuffer和StringBuilder类

StringBuffer 是线程安全的 这个类中的方法上加了一个synchronized(同步锁)关键字,

StringBuilder 类中的方法没有加synchronized关键字,是多线程不安全的

两者不同点: StringBuffer是线程安全的

StringBuilder是线程不安全的(适合单线程情况)

两者相同点: 都是可变的字符串对象,底层都有一个char数组char[] value; 创建之初,会创建一个指定容量的数组,增删改查都是在此数组上操作.数组如果空间不够,会新创建一个数组,Arrays.copyOf();最终实现,调用的都是AbstractStringBuilder父类中方法实现.

方法:(两者方法相同)

构造方法

public StringBuffer()

public StringBuffer(String str)

添加功能

StringBuffer append(String str)

StringBuffer insert(int offset,String str)

删除功能

StringBuffer deleteCharAt(int index)

StringBuffer delete(int start,int end)

替换功能

StringBuffer replace(int start,int end,String str)

反转功能

StringBuffer reverse()

截取功能

String substring(int start)

String substring(int start,int end)

十一、String,StringBuffer 和 StringBuilder区别

String值不可改变,适用于少量拼接的

StringBuffer可变 多线程安全的 适用于大量拼接

StringBuilder可变 多线程不安全的 适用于大量拼接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值