1. 简介
十一放假期间在脉脉上看见一道面试题讨论的很火热:
Java中字符串是如何存储的?
这一问题看似简单,但是背后却隐藏了很多深层机制,本文将逐一介绍相关技术原理。
2. 字符串类
字符串广泛应用于Java编程中,在Java中字符串属于对象,Java提供了String 类来创建和操作字符串。
2.1 java.lang.String
java.lang.String成员变量如下:
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
/** The value is used for character storage. */
private final char value[];
/** Cache the hash code for the string */
private int hash; // Default to 0
/** use serialVersionUID from JDK 1.0.2 for interoperability */
private static final long serialVersionUID = -6849794470754667710L;
String类包含了两个私有的final变量,int hash用于缓存hash值,char数组用于储存数据。
2.2 char
Java运行时,char按UTF-16编码,一个char需要占用两个字节(生僻字除外)。
2.3 数组
JVM中数组相关的类主要包括: