前言
- 该文章为Java基础自学笔记
- 其他内容:Java基础学习笔记目录
- 学习用书:
《Java核心技术 卷Ⅰ 基础知识(第10版)》
《Java经典编程300例》
第十一章 String类
11.1 String类概述
- java.lang.String类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串
- Java程序中的所有字符串文字都是String类的对象
11.1.1 String类的特点
- String常被称为不可变字符串类型,它的对象在创建后不能被更改
- String变量每次的修改其实都是产生并指向了新的字符串对象
- 原来的字符串对象都是没有改变的
- 以" "方式给出的字符串对象,在字符串常量池中存储
11.2 String类创建对象的两种方式
11.2.1 方式一:直接使用“ ”定义(推荐方式)
String str = "abc";
11.2.2 通过" "定义字符串内存原理

11.2.3 方式二:通过String类的构造器创建对象
构造器 |
说明 |
public String() |
创建一个空白字符串对象,不含有任何内容 |
public String(String original) |
根据传入的字符串内容,创建字符串对象 |
public String(char[] chs) |
根据字符数组的内容,创建字符串对象 |
public String(byte[] chs) |
根据字节数字的内容,创建字符串对象 |
11.2.4 通过new构造器得到字符串对象内存原理

11.2.5 两种方式的区别
- 以 " " 方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在常量池中存储一份
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);
- 通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中
String s3 = new String("abc");
String s4 = new String("abc");
System.out.println(s3 == s4);
11.3 String类常见面试题
String s1 = new String("abc");
String s2 = "abc";
System.out.println(s1 == s2);
String s1 = "abc";
String s2 =