java之String字符串详解(史上最全)

书欣 Java经验 发布时间:2022-09-30 17:05:47 阅读数:2722 1
下文笔者讲述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);
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202209/16645287844547.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者