Java 中字符串与 []byte 字节数组
2021-07-15 16:06
标签:重载 lis contains index 情况 code 原因 本质 har 一、字符串 1. += 重载符号 与 concat str1 += str2 :底层用的 StringBuilder 效率更高,但是不够灵活,在某些情况下效率反而较低。 concat:返回一个新的字符串,在字符串很少时,效率稍高。 StringBuilder:使用 append 拼接,在多段字符串拼接时效率高。 输出结果 2.比较 String、HashSet、List 中的 contains 方法 其中, String、List 都使用了 indexOf 方法,本质是遍历,时间效率为 O(n)。而 HashSet 使用了计算 hash值的方式,时间效率为 O(1) 级别。 3.String 中为什么需要 hashCode 方法? 从String 源码可以看到其底层实现是 char[],即本质是字符数组。包括索引及大部分功能实现都是使用数组。 为什么还需要 hash 值呢?原因是 String 可以作为 HashSet、HashMap 容器的 key,因此需要获取 key的哈系值。 Java 中字符串与 []byte 字节数组 标签:重载 lis contains index 情况 code 原因 本质 har 原文地址:https://www.cnblogs.com/lemos/p/9536262.htmlstr1 = new StringBuilder().append(str1).append(str2).toString();
@org.junit.Test
public void test() {
int times = 100000;
String s1 = "";
String s2 = "";
StringBuilder s3 = new StringBuilder("");
long a = System.currentTimeMillis();
for(int i = 0 ;i
7289 | 1593 | 5
public final class String implements xxx {
private final char value[];
/** Cache the hash code for the string */
private int hash; // Default to 0
public String() {
this.value = "".value;
}
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
上一篇:JS数组去重