Java基础之String笔记

String是开发中的常客,但是最近发现这个常客很多细节被我给遗忘了,所以今天就总结一下,以加强记忆。

在String类中,String重写了Object的equals方法,比较的是对象的内容是否一致。

“==”用于比较引用类型数据的时候,比较的是两个对象的内存地址,equals方法默认情况下比较的也是两个对象的内存地址。

1: String的构造方法:

String()这是构造方法,需要创建String对象使用,new String();返回值全部都是返回String类型的字符串。

String(); 创建一个空内容的字符串对象。

String(byte[] bytes);使用一个字节数组构建一个字符串对象。

String(byte[] byte,int offset ,int length);
Bytes: 要解码的数组。
offset: 指定从数组中的那个索引值开始解码。
length: 要解码的元素的个数。

String (char[] value): 使用一个字符数组构建一个字符串

String(char[] value,int offset, int count): 使用一个字符数组构建一个字符串并指定开始的索引值,与个数。

String(int[] codePoints,int offset,int count): 传进一个int类型数组解码,同String(byte[] bytes, int offset ,int count )一样。

String (String original) 就是返回跟传入的参数一样。

总结:使用字节数组或者字符数组都可以构建一个字符串对象

2:String的获取方法(也是普通方法)

前面为返回类型,后面为方法名:

int length(); 获取字符串的长度

char charAt(int index); 获取特定位置的字符(角标越界)

int indexOf(String str); 查找子串(其实也就是指定的字符串)第一次出现的索引值,如果子串没有出现在字符串中,那么则返回-1 表示

int indexOf(String str , int fromIndex); 查找子串(其实也就是指定的字符串)第一次出现的索引值,并且从指定的索引开始,如果子串没有出现在字符串中,那么则返回-1表示。

int lastIndexOf(String str); 查找子串最后一次出现的索引值,如果子串没有出现在字符串中,那么则返回-1表示

3:String的判断方法

前面为返回的类型 后面为方法名
Boolean startsWith(String str) 是否以指定的字符开头
boolean endsWith(String str) 是否以指定字符结束
boolean isEmpty() 是否长度为0
boolean contains(CharSequences) 是否包含指定序列,用来搜索的
boolean equals(Object anObject) 字符串的内容是否相等,不忽略大小写
boolean equalsIgnoreCase(String anotherStrin) 忽略大小写判断字符串的内容是相等

4:String的转换方法

char[] toCharArray() 将字符串转换为字符数组
byte[] getBytes() 将字符串转换为字节数组

总结:字节数组与字符数组与字符串他们三个是可以互相转换的。

5:String的其它方法


前面为返回的类型,后面为方法名
String replace(char oldChar, char newChar) 替换,用newChar替换字符串中的oldChar。
String[] split(String regex) 切割,根据指定字符regex切割,返回一个String数组。
String substring(int beginIndex) 指定开始的索引值截取子串。
String substring(int beginIndex, int endIndex)指定开始与结束的索引值截取子串。

包头不包尾 注意:截取的内容是包括开始的索引值,不包括结束的索引值, 截取的位置是结束的索引值要+1.
String toUpperCase() 转大写
String toLowerCase() 转小写

String trim() 去除字符串首尾的空格


字符串的特点:
字符串是常量,他们的值在创建之后不能更改。
字符串的内容一旦发生了变化,那么马上会创建一个新的对象。
注意:字符串的内容不适宜频繁修改,因为一旦修改马上就会创建一个新的对象。

如果需要频繁修改字符串的内容,建议使用字符串缓冲类(StringBuffer)。
StringBuffer其实就是一个存储字符的容器。

笔试题目:使用StringBuffer无参的构造函数创建一个对象时,默认的初始值容量是多少,如果长度不够使用了,自动增长多少倍?
答:StringBuffer底层是依赖一个字符数组才能存储字符数据的,该字符串数组默认的初始容量是16,如果字符数组的长度不够使用,自动增长1倍+2

StringBuffer

StringBuffer是一个储存字符的容器,返回字符串缓冲类的内容。
StringBuffer的方法,如下
增加

append("");//(参数任意)可以添加任意类型的数据到容器中,自动加到字符串后面。<br>
insert(int offset,String str)://指定插入的索引值,插入对应的内容(String str)可以有不同类型的参数<br>

删除

delete(int start,int end)       根据指定的开始与结束的索引值删除对应的内容
deleteCharAt(int index)     根据指定的索引值删除一个字符

修改

replace(int start,int end,String str)       //根据指定的开始与结束索引值替代指定的内容,长度无须一致,等同于先删除指定开始和结束索引值的内容,然后在这个位置加上指定的内容
reverse()   //翻转字符串缓冲类的内容 abc---cba
setCharAr(int index,char ch)        //把指定索引值的字符替换指定的字符(一个字符)
substring(int start,int end)        //根据指定的索引值截取(获取)子串
ensureCapacity(int minimumCapacity)     //指定StringBuffer内部的字符数组长度(指定StringBuffer最少的容量,非常少用,一般可以在创建StringBuffer对象的时候就可以传进指定的容量)

查看

IndexOf(String str,int fromIndex)       //查找指定的字符串第一次出现的索引值,并指定开始查找的位置
lastIndexOf(String str);    //查找指定的字符串最后一次出现的索引值
capacity();     //查看当前字符数组的容量
length() ;      //查看当前存储的字符数组的长度(个数)
charAt() ;      //查找指定索引值的字符
toString();     //把字符串缓冲类的内容转换字符串返回

StringBuffer 与StringBuilder的相同处与不同处:
相同点:
1. 两个类都是字符串缓冲类
2. 两个类的方法都是一致的

不同点:

  1. StringBuffer是线程安全的,操作效率低,StringBuilder是线程非安全的,操作效率高。
  2. StringBuffer是jdk1.0出现的,StringBuilder是jdk1.5的时候出现的。

推荐使用StringBuilder,因为操作效率高。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值