0
点赞
收藏
分享

微信扫一扫

Java 基础入门篇(六)—— String 类详解

yellowone 2023-05-02 阅读 58

文章目录


一、String 类概述

java.lang.String 类代表字符串,它定义的变量可以指向一个字符串对象。同时 String 类提供了很多操作字符串的功能,我们可以直接使用。

String 是不可变字符串:String 变量每次的修改其实都是产生并指向了新的字符串对象,而原来的字符串对象都是没有改变的,所以称不可变字符串。

  如下方程序,首先在字符串常量池中,创建 “传智” 对象,并指向该对象。当执行 name+=“教育” 时,首先在常量池中创建 “教育” 对象,并将 “传智” 与 “教育” 两个对象拼接生成 “传智教育” 对象,并指向该对象。以此类推…

在这里插入图片描述
每当用 + 符号,拼接生成新的字符串时,原来的字符串都没有改变,因此 String 是不可变字符串。


二、String 创建对象的方式

2.1 创建对象的两种方式

  • 方式一:直接使用 " " 定义(推荐方式)
    String name = “黑马”;

  • 方式二:通过 String 类的构造器创建对象
    在这里插入图片描述


2.2 面试:两种方式的区别

  • 双引号 " " 给出的字符串对象,存在于堆内存中的常量池中,相同内容只会存储一份
    在这里插入图片描述
  • new 字符串对象,每new一次都会在堆内存中产生一个字符串对象
    在这里插入图片描述

2.3 常见面试题

  1. 下列代码的运行结果是?
    String s2 = new String(“abc”);:先去常量池中创建对象,然后再通过 new 创建对象。
    String s1 = “abc”;:由于常量池中有对象,所以不需创建对象。
    在这里插入图片描述
    扩展: 若先执行 String s1 = “abc”;,再执行 String s2 = new String(“abc”); ,则 s1 与 s2 分别创建一个对象。

  1. 下列代码的运行结果是?
    s3 不在常量池中,即不是双引号直接给出的,不会放在常量池中。
    在这里插入图片描述
    扩展: 程序总共创建四个对象,其中常量池中分别有:“abc”、“ab”、“c”,不在常量池中 “abc”。

  1. 下列代码的运行结果是?
    java 存在编译优化机制,程序在编译时,自动将 “a”+“b”+“c” 直接转换成 “abc”。
    在这里插入图片描述

三、String 类常用方法

3.1 字符串内容比较

== 判断字符串对象是判断地址的,这样会引起很多业务问题。推荐使用 equals 方法比较:

在这里插入图片描述

:基本数据类型用 == 比较。


3.2 常用 API:遍历、截取、替换、分割

在这里插入图片描述
举例:

String str = "abcdefg";
String s1 = "cde";
String s2 = "ggg";
String replaceStr = str.replace(s1, s2);
System.out.println(replaceStr); // abgggfg

文章参考:Java入门基础视频教程,java零基础自学就选黑马程序员Java入门教程(含Java项目和Java真题)

举报

相关推荐

0 条评论