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);
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。