java之String字符串详解(史上最全)
下文笔者讲述String字符串详解说明,如下所示
字符串简介
字符串是java编程中使用最多的类型 字符串属于对象 字符串String在java中是不可变的
创建字符串
//方式1:
String str = "java265.com";
//方式2
String str = new String("java265.com");
//....
String底层原理
String类的核心是其内部的两个成员变量(final修饰的value字符数组和hash):
/** The value is used for character storage. */
private final char value[];
/** Cache the hash code for the string */
private int hash; // Default to 0
String的一成不变的根源在于value字符数组是final的。hash的计算方式如下(String重写了Object的hashCode方法,使用31哈希算法):
public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value;
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}
两个字符串对比方法equals
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;
}
运行原理
1.比较两个字符串对象是否是同一个
2.比较是否都是String对象
3.字符串长度是否相同
4.逐个字符比较
String常用方法
//是否以某个字符串作为前缀 public boolean startsWith(String prefix); //是否以某个字符串作为后缀 public boolean endsWith(String suffix); //查找子字符串的位置,未查找到返回-1 public int indexOf(String str); //字符串截取 public String substring(int beginIndex); //字符串范围截取 public String substring(int beginIndex, int endIndex); //字符串中是否包含字符序列s public boolean contains(CharSequence s); //字符串子串替换 public String replace(CharSequence target, CharSequence replacement); //告知此字符串是否匹配给定的正则表达式 public boolean matches(String regex); //使用指定的格式字符串和参数返回一个格式化字符串 public static String format(String format, Object... args); //使用给定的replacement替换此字符串所有匹配给定的正则表达式的子字符串 public String replaceAll(String regex, String replacement); //使用给定的replacement替换此字符串匹配给定的正则表达式的第一个子字符串 public String replaceFirst(String regex, String replacement); //将指定字符串连接到此字符串的结尾 public String concat(String str); //根据给定正则表达式的匹配拆分此字符串 public String[] split(String regex);
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


