• 【JAVA基础】String类概述


    📃个人主页:个人主页

    🔥系列专栏:JAVASE基础

    目录

    前言:

    1.String类概述

    2.创建字符串对象的2种方式

    3.String常见面试题

    4.String类常用API-字符串内容比较


    前言:

    API (Application Programming Interface,应用程序编程接口)
    • Java写好的技术(功能代码),咱们可以直接调用。
    • Oracle 也为Java提供的这些功能代码提供了相应的 API文档(技术使用说明书)

    下载API文档:

    API文档

    String简单介绍
    • String类定义的变量可以用于存储字符串,同时String类提供了很多操作字符串的功能,我们可以直接使用。

    关于 String 类同学们需要学会什么

    1.String类概述

    String 概述
    • java.lang.String 类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串。
    • Java 程序中的所有字符串文字(例如“abc”)都为此类的对象。
    1. String name = "滴滴";
    2. String schoolName = "滴滴答答";

    String类的特点详解
    • String其实常被称为不可变字符串类型,它的对象在创建后不能被更改。
    1. public static void main(String[] args) {
    2. String name = "热爱";
    3. name += "编程的";
    4. name +="小白白";
    5. System.out.println(name);
    6. }

     从上述代码可以看出字符串变量name指向的字符串对象,那为何还说字符串不可变呢?

    字符串对象存在哪里?
    以“”方式给出的字符串对象,在字符串常量池中存储。
    String是不可变字符串的原因?
    • String变量每次的修改其实都是产生并指向了新的字符串对象。
    • 原来的字符串对象都是没有改变的,所以称不可变字符串。

    2.创建字符串对象的2种方式

    方式一:直接使用“”定义。(推荐方式)

    String name = "热爱编程的小白白";
    方式二:通过String类的构造器创建对象。
    构造器说明
    public String()创建一个空白字符串对象,不含有任何内容
    public String(String original)根据传入的字符串内容,来创建字符串对象
    public String(char[] chs)根据字符数组的内容,来创建字符串对象
    public String(byte[] chs)根据字节数组的内容,来创建字符串对象
    有什么区别吗?(面试常考)
    • 以“”方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份。
    • 通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中。
    1. String s1 = "abc";
    2. String s2 = "abc";
    3. System.out.println(s1 == s2); // true
    4. char[] chs = {'a', 'b', 'c'};
    5. String s3 = new String(chs);
    6. String s4 = new String(chs);
    7. System.out.println(s3 == s4); // false

     通过“”定义字符串内存原理

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

    字符串对象的特点有哪些?
    • 双引号创建的字符串对象,在字符串常量池中存储同一个。
    • 通过new 构造器创建的字符串对象,在堆内存中分开存储。

    3.String常见面试题

     代码如下(大家可以运行测试一下):

    1. public static void main(String[] args) {
    2. String s2 = new String("abc");
    3. String s1 = "abc";
    4. System.out.println(s1 == s2);
    5. }

      代码如下(大家可以运行测试一下):

    1. public static void main(String[] args) {
    2. String s1 = "abc";
    3. String s2 = "ab";
    4. String s3 = s2 + "c";
    5. System.out.println(s1 == s3);
    6. }
    1. public static void main(String[] args) {
    2. String s1 = "abc";
    3. String s2 = "a" + "b" + "c";
    4. System.out.println(s1 == s2);
    5. }

    4.String类常用API-字符串内容比较

    字符串的内容比较

    1. public static void main(String[] args) {
    2. String sysLoginName = "itheima";
    3. Scanner sc = new Scanner(System.in);
    4. System.out.println("请您输入您的登录名称");
    5. String loginName = sc.next();
    6. System.out.println(sysLoginName == loginName);
    7. }

    结论:字符串的内容比较不适合用==比较。

    字符串的内容比较
    推荐使用String类提供的“equals”比较:只关心内容一样即可
    方法名说明
    public boolean equals (Object anObject)将此字符串与指定对象进行比较。只关心字符内容是否一致!
    public boolean equalsIgnoreCase (String anotherString)将此字符串与指定对象进行比较,忽略大小写比较字符串。只关心字符内容是否一致!

    equals

    1. public static void main(String[] args) {
    2. String sysLoginName = "itheima";
    3. Scanner sc = new Scanner(System.in);
    4. System.out.println("请您输入您的登录名称");
    5. String loginName = sc.next();
    6. System.out.println(sysLoginName.equals(loginName));
    7. }

    equalsIgnoreCase
    1. public static void main(String[] args) {
    2. String sysLoginName = "itheima";
    3. Scanner sc = new Scanner(System.in);
    4. System.out.println("请您输入您的登录名称");
    5. String loginName = sc.next();
    6. System.out.println(sysLoginName.equalsIgnoreCase(loginName));
    7. }

    因为,equalsIgnoreCase忽略大小写比较字符串。所以我把其中的字母改成大写,两字符比较仍然得到true

  • 相关阅读:
    敏捷管理工具和scrum敏捷管理方法介绍
    WPF学习 - 自定义窗体(一)
    pytorch中常用的损失函数
    基于遗传优化的货柜货物摆放优化问题求解matlab仿真
    怎么压缩视频?最新压缩技巧大分享
    HDFS节点的分类与作用
    GDB使用详解
    给你 2 万条数据,怎么快速导入到 MySQL?
    业务数据分析-常见业务指标
    P2483-[模板]k短路/[SDOI2010]魔法猪学院【主席树,堆】
  • 原文地址:https://blog.csdn.net/Javascript_tsj/article/details/126693530