对之前学习的Java基础进行补充
由于前两天去参加全媒体大赛耽误了补充进度,今天继续
- 码点转换成字符串
当我们获取到一个码点的时候,我们也可以通过String构造函数来创建一个字符串
String temp = "你好";
// 遍历“你好”的码点
int[] codePoints = temp.codePoints().toArray();
String string = new String(codePoints, 0, codePoints.length)
// string = "你好";
- String API
对于String来说,除非对底层的代码单元感兴趣才调用之前有关码点的方法! 其实日常我们使用一些常用,方便的就行 - ① int compareTo(String other)
按照字典顺序,如果字符串位于 other 之前, 返回一个负数;如果字符串位于 other 之 后,返回一个正数;如果两个字符串相等,返回 0。
/**
* 源码:其实就是按照两个字符数组中
* 最短数组的和另一个数组比较
* 如果短串与长串的首部相同(startWidth)那么返回长度差
* 否侧返回不同字母的Ascii差
*/
public int compareTo(String anotherString) {
int len1 = value.length;
int len2 = anotherString.value.length;
int lim = Math.min(len1, len2);
char v1[] = value;
char v2[] = anotherString.value;
int k = 0;
while (k < lim) {
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) {
return c1 - c2;
}
k++;
}
return len1 - len2;
}
验证
System.out.println("a".compareTo("bcd"));
// -1 (短串是a和长传bcd不满足startWidth则返回'b'-'a'的值)
System.out.println("a".compareTo("aaa"));
// -2 (短串是a和长传aaa满足startWidth则返回a.length - aaa.length的值)
- boolean equals(Object anObject)
如果字符串与 other 相等, 返回 true。
/**
* 源码:其实就是按照两个字符数组中
* 查看源码发现原理是先判断两个对象的引用是否一致,若是侧返回true
* 否则再判断anObject是不是String类型if (anObject instanceof String)
* 若是再判断两串的长度(不相等返回false),最后判断对应位置的字符是否全部相等
*/
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
不必演示代码了
其他常用api如下:
- boolean equalsIgnoreCase(String other )
如果字符串与 other 相等 ( 忽略大小写) 返回 tme。 - boolean startsWith(String prefix )
如果字符串以 suffix 开头 则返回 true。 - boolean endsWith(String suffix )
如果字符串以 suffix 结尾 则返回 true。 - int indexOf(String str)
- int indexOf(String str, int fromlndex )
- int indexOf(int cp)
- int indexOf(int cp, int fromlndex )
返回与字符串 str 或代码点 cp 匹配的第一个子串的开始位置。这个位置从索引 0 或
fromlndex 开始计算。 如果在原始串中不存在 str,
返回 -1。 - int lastIndexOf(String str)
- Int lastIndexOf(String str, int fromlndex )
- int lastindexOf(int cp)
- int lastindexOf(int cp, int fromlndex )
返回与字符串 str 或代码点 cp 匹配的最后一个子串的开始位置。 这个位置从原始串尾端或 fromlndex 开始计算 - String replace( CharSequence oldString,CharSequence newString)
返回一个新字符串。这个字符串用 newString 代替原始字符串中所有的 oldString。可以用 String 或 StringBuilder 对象作为 CharSequence 参数。 - String toLowerCase( )
全部替换成大写字母 - String toUpperCase( )
全部替换成小写字母 - String trim( )
返回一个新字符串。这个字符串将删除了原始字符串头部和尾部的空格 - String subString()
字符串截取[a,b)
今天就先到这!虽然不多 但要坚持 晚安