String:
String是一个封装了char[]数组以实现字符串功能的类,
其中包括:length(),isEmpty(),charAt(int index),,
//value为封装的char[]数组
字符串长度:
int length():
//通过value.length计算长度后返回
字符串非空:
boolean isEmpty():
//通过value.length==0进行判断,无非空判断所以null会报错
获取index索引的char:
char charAt(int index):
//通过返回value[index]实现,有越界判断,参数越界会返回StringIndexOutOfBoundsException异常
获取index索引的char的编码:
int codePointAt(int index):
//有越界判断,调用Character类的codePointAtImpl(value, index, value.length)方法实现
//(int)str.charAt(index)也可实现
截取字符串添加到char[]数组中:
void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin):
//调用System.arraycopy(value, srcBegin, dst, dstBegin, srcEnd - srcBegin)方法实现
//System.arraycopy()如果存在类型不同则报错,报错开始不继续储存数据
//截取value索引srcBegin起后srcEnd - srcBegin位的char[]数组赋值给dst
判断两个字符串的值是否相同:
boolean equals(Object anObject):
//如果地址相同则返回true
//判断anObject是否为String类型
//判断长度是否相同
//循环判断每个字符是否相等
//否则返回false
查找字符,返回索引:
int indexOf(int ch, int fromIndex):
//ch为char的编码
//fromIndex为从第几位开始
//fromIndex如果小于0则赋值为0,如果大于字符串长度则返回异常
//循环比对,有返回索引,没有返回-1
从后查找字符,返回索引:
int lastIndexOf(int ch, int fromIndex):
//反向循环获取索引
通过索引截取字符串:
String substring(int beginIndex, int endIndex):
//判断beginIndex和endIndex是否越界,如果越界返回StringIndexOutOfBoundsException异常
//返回一个新String对象 new String(value, beginIndex, endIndex-beginIndex);
连接字符串:
源代码:
public String concat(String str) {
int otherLen = str.length();
if (otherLen == 0) {
return this;
}
int len = value.length;
char buf[] = Arrays.copyOf(value, len + otherLen);
str.getChars(buf, len);
return new String(buf, true);
}
void getChars(char dst[], int dstBegin) {
System.arraycopy(value, 0, dst, dstBegin, value.length);
}
String concat(String str):
//通过Arrays.copuOf(value,value.length+str.length())
//创建一个长度为两个字符串长度总和,并且前value.length位//本对象长度
是value数据的char[]数组
//然后调用str.getChars(char dst[], int dstBegin);方法从dstBegin索引开始拷贝str的value到dst
//最后返回new String(buf, true);
替换字符:
String replace(char oldChar, char newChar):
//判断oldChar不等于newChar
//循环比对字符,保留当前索引
//创建一个长度为原字符串长度的char数组
//循环赋值,如果等于保留索引则赋newChar值
//返回参数为char[]的构造方法
1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);
2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号;
根据分隔符分割字符串成数组
split(String regex, int limit):
//判断regex长度等于1和不在特殊符号中或者regex长度为2,第一位为转义符\\,第二位不能是数字,字母,和高低位代理
//循环判断如果有分隔符则分割加入ArrayList