📃个人主页:个人主页
🔥系列专栏:JAVASE基础
目录
下载API文档:

- String name = "滴滴";
- String schoolName = "滴滴答答";
- public static void main(String[] args) {
- String name = "热爱";
- name += "编程的";
- name +="小白白";
- System.out.println(name);
- }

从上述代码可以看出字符串变量name指向的字符串对象,那为何还说字符串不可变呢?
方式一:直接使用“”定义。(推荐方式)
String name = "热爱编程的小白白";
| 构造器 | 说明 |
| public String() | 创建一个空白字符串对象,不含有任何内容 |
| public String(String original) | 根据传入的字符串内容,来创建字符串对象 |
| public String(char[] chs) | 根据字符数组的内容,来创建字符串对象 |
| public String(byte[] chs) | 根据字节数组的内容,来创建字符串对象 |
- String s1 = "abc";
- String s2 = "abc";
- System.out.println(s1 == s2); // true
- char[] chs = {'a', 'b', 'c'};
- String s3 = new String(chs);
- String s4 = new String(chs);
- System.out.println(s3 == s4); // false
通过“”定义字符串内存原理

通过new构造器得到字符串对象


代码如下(大家可以运行测试一下):
- public static void main(String[] args) {
- String s2 = new String("abc");
- String s1 = "abc";
- System.out.println(s1 == s2);
- }

代码如下(大家可以运行测试一下):
- public static void main(String[] args) {
- String s1 = "abc";
- String s2 = "ab";
- String s3 = s2 + "c";
- System.out.println(s1 == s3);
- }
- public static void main(String[] args) {
- String s1 = "abc";
- String s2 = "a" + "b" + "c";
- System.out.println(s1 == s2);
- }
字符串的内容比较
- public static void main(String[] args) {
- String sysLoginName = "itheima";
- Scanner sc = new Scanner(System.in);
- System.out.println("请您输入您的登录名称");
- String loginName = sc.next();
- System.out.println(sysLoginName == loginName);
- }

结论:字符串的内容比较不适合用“==”比较。
| 方法名 | 说明 |
| public boolean equals (Object anObject) | 将此字符串与指定对象进行比较。只关心字符内容是否一致! |
| public boolean equalsIgnoreCase (String anotherString) | 将此字符串与指定对象进行比较,忽略大小写比较字符串。只关心字符内容是否一致! |
equals
- public static void main(String[] args) {
- String sysLoginName = "itheima";
- Scanner sc = new Scanner(System.in);
- System.out.println("请您输入您的登录名称");
- String loginName = sc.next();
- System.out.println(sysLoginName.equals(loginName));
- }

- public static void main(String[] args) {
- String sysLoginName = "itheima";
- Scanner sc = new Scanner(System.in);
- System.out.println("请您输入您的登录名称");
- String loginName = sc.next();
- System.out.println(sysLoginName.equalsIgnoreCase(loginName));
- }
因为,equalsIgnoreCase忽略大小写比较字符串。所以我把其中的字母改成大写,两字符比较仍然得到true