【Java基础复习-09API的使用及字符串】

本文详细介绍Java中字符串操作的核心概念和技术,包括String、StringBuilder和StringJoiner的使用方法及原理,适用于初学者和需要复习相关知识的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


首先祝各位读者新年快乐,如今过年走亲戚串门也基本已经圆满完成,是时候继续我们的学习之旅了。

提示:以下是本篇文章正文内容,可供参考

API

API (Application Programming Interface):应用程序编程接口

简单理解: API就是别人已经写好的东西,我们不需要自己编写,直接使用即可。
Java API:指的就是JDK中提供的各种功能的Java类

这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。
比如:

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
    }

上面的代码就是使用了Java的API

API帮助文档

API帮助文档:帮助开发人员更好的使用API和查询API的一个工具。

网盘下载

链接:

https://pan.baidu.com/s/1cZJIoXkTAxYtnc2EA08p8g

提取码:22jh

如何使用?

1.打开API帮助文档
2.点击显示,并找到索引下面的输入
3.在输入框中输入类名并点击显示
4.查看类所在的包
5.查看类的描述
6.查看构造方法
7.查看成员方法

使用详解

比如我们使用帮助文档来使用Scanner对象及其方法
1.打开API帮助文档
2.点击显示,并找到索引下面的输入
3.在输入框中输入类名并点击显示
4.查看类所在的包
如图所示:
在这里插入图片描述
5.查看类的描述
在这里插入图片描述

6.查看构造方法
在这里插入图片描述

7.查看成员方法
在这里插入图片描述

使用代码进行演示

public static void main(String[] args) {
        // 1.根据构造方法创建对象
        Scanner sc = new Scanner(System.in);
        // 2.设置提示信息
        System.out.println("请输入一个数");
        // 3.接收数据
        String a = sc.next();
        // 4.打印数据
        System.out.println(a);
    }

根据构造方法创建对象(有参),输入流用的是system.in流
注:System.in属于Java的标准输入流,因为输入流可以包括一个文件,键盘输入,更或是一个其他的输入流等,System.in就属于控制台输入流,键盘输入是一种System.in流
在这里插入图片描述

字符串

1.什么是字符串?

用双引号包裹起来的就叫字符串
例如:“123” , “hello world !”

2.字符串有什么作用?

首先就是我们最熟悉的拼接操作

用任意类型的数据与字符串进行相加都是拼接操作,并产生一个新的字符串
比如:System.out.println(“hello"+true);
在这里插入图片描述

当然字符串还有其他很多操作,比如:
比较,替换,截取,查找,切割,检索,加密,打乱内容,等等

字符串在开发当中的应用场景

1.登录注册
在这里插入图片描述
其中你输入的账号密码就是一串字符串,上面的账号输入框中你只需要输入你的邮箱账号,它会帮你自动拼接一个@163.com的字符串
当你输入完成点击登录时会进行账号密码的校验,也就是字符串的比较

2.转账界面
在这里插入图片描述
正如上面的图片所示,其中的付款账户并没有完全显示账号而是使用*将其中的一些数字进行了字符串的替换
在这里插入图片描述
上面标注的部分是进行了字符串的转换功能

当然除了上面的部分还有很多,这里就不再演示

字符串学习内容

  • String, StringBuilder,Stringjonier,StringBuffer,Pattern,Matcher
    学会这些就可以掌握字符串的一些常见操作了。
  • 实际开发中的一些常见案例
    掌握分析问题,解决问题的能力。
  • 字符串相关的底层原理
    掌握原理更好的通过面试,处理开发中的一些复杂问题。

String

String概述

java.lang.String类代表字符串,Java程序中的所有字符串文字(例如“abc”)都为此类的对象。
举例:

String name = "张三";
String sex = "男";

String的注意点

字符串的内容是不会发生改变的,它的对象在创建后不能被更改。

String name = "张三";
String sex = "男";
System.out.println(name+sex);

在这里插入图片描述

字符串拼接产生一个新的字符串

字符串的创建方式:

在这里插入图片描述

代码实现:
在这里插入图片描述

运行结果:
在这里插入图片描述
观察下面代码

public class StringDemo {
  public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "abc";
      }
    }

从Java的内存模型分析

1.使用直接赋值的方式创建
在这里插入图片描述

当使用双引号直接赋值时,系统会检查该字符串在串池中是否存在。不存在则创建新的,存在则复用。

2.使用new的方式来创建一个字符串对象
在这里插入图片描述
此时每个对象在堆内存当中都开辟了一个空间,这种方式创建的字符串不会复用,那么当相同的字符串比较多时会浪费空间。

常用方法

字符串的比较

1.用“= =”进行比较

首先了解一下“= =”的比较原理
在这里插入图片描述
由上面可以看出用“= =”比较字符串的内容是否一致,这种方法是不行的

2.使用方法进行比较

下面有两种常用方法:

字符串的
代码演示:
在这里插入图片描述
运行结果:
在这里插入图片描述

StringBuilder

StringBuilder概述

StringBuilder可以看成是一个容器,创建之后里面的内容是可变的
作用:提高字符串的操作效率
比如下面代码

        String s1 = "aaa";
        String s2 = "bbb";
        String s3 = "ccc";
        String s4 = s1+s2+s3;

我们想让字符串进行拼接操作,按照之前的操作是从左往右进行拼接,且字符串本身是不可变的。每次拼接都要产生一个新的字符串,例如:aaa+bbb会产生一个aaabbb,aaabbb+ccc=aaabbbccc因此会产生多个没用字符串,不但影响内存且影响效果。
此时我们可以用StringBuilder容器,我们只需要创建一个StringBuilder对象即可完成

StringBuilder构造方法

在这里插入图片描述
!](https://img-blog.csdnimg.cn/feffca11bc44492ab7757fa56aec7452.png)

StringBuilder常用方法

在这里插入图片描述
代码演示:

public static void main(String[] args) {
        StringBuilder s = new StringBuilder();
        //打印//普及:
        //因为stringBuilder是Java已经写好的类
        //java在底层对他做了一些特殊处理。
        //打印对象不是地址值而是属性值。
        System.out.println(s);

    }

运行结果:
在这里插入图片描述
方法的使用:

public static void main(String[] args) {
        // 1.创建对象
        StringBuilder s = new StringBuilder("abc");
        // 2.添加元素
        s.append(1);
        s.append(true);
        s.append("good");
        System.out.println(s);
        // 反转
        s.reverse();
        System.out.println(s);
        // 获取长度
        int len = s.length();
        System.out.println(len);
    }

运行结果:
在这里插入图片描述

 // 1.创建对象
        StringBuilder s = new StringBuilder("abc");
        // 2.添加元素
        s.append(1);
        s.append(true);
        s.append("good");
        System.out.println(s);

对于System.out.println(s);这行代码我们打印的并不是字符串而是StringBulider容器当中的内容。如果我们想要把容器当中的内容变成字符串时就需要用到toString()这个方法。这样才可以使用字符串的方法
如下:

public static void main(String[] args) {
        // 1.创建对象
        StringBuilder s = new StringBuilder("abc");
        // 2.添加元素
        s.append(1);
        s.append(true);
        s.append("good");
        System.out.println(s);
        //3.再把StringBuilder变回字符串
        String ss = s.toString();
        System.out.println(s);
    }

链式编程:
当我们在调用一个方法的时候,不需要用变量接收他的结果,可以继续调用其他方法
比如上面的代码我们可以简化成:

public static void main(String[] args) {
        // 1.创建对象
        StringBuilder s = new StringBuilder("abc");
        // 2.添加元素
        s.append(1).append(true).append("good").toString();
        System.out.println(s);

    }

StringJoiner

StringJoiner概述

StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。

作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用。
JDK8出现的

StringJoiner的构造方法

在这里插入图片描述

StringJoiner的成员方法

在这里插入图片描述
代码演示:

public static void main(String[] args) {
        //1.创建一个对象,并指定中间的间隔符号
        StringJoiner sj = new StringJoiner("---");
        //2.添加元素
        sj.add( "aaa" ).add( "bbb" ).add( "ccc" );
        //3.打印结果
        System.out.println(sj);
        // 1.创建一个对象,并指定中间的间隔符号,开始符结束符
        StringJoiner s2 = new StringJoiner(",","[","]");
        //2.添加元素
        s2.add( "qq" ).add( "ww" ).add( "ee" );
        //3.打印结果
        System.out.println(s2);
    }

运行结果:
在这里插入图片描述

总结:

1.String表示字符串的类,定义了很多操作字符串的方法

2.StringBuilder一个可变的操作字符串的容器。可以高效的拼接字符串,还可以将容器里面的内容反转。
3.StringJoiner JDK8出现的一个可变的操作字符串的容器,可以高效,方便的拼接字符串。

4.字符串拼接的底层原理
如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果,会复用串池中的字符串。如果有变量参与,每一行拼接的代码,都会在内存中创建新的字符串,浪费内存。

5.StringBuilder提高效率原理图
所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存

6.StringBuilder源码分析
默认创建一个长度为16的字节数组添加的内容长度小于16,直接存
添加的内容大于16会扩容(原来的容量*2+2)如果扩容之后还不够,以实际长度为准

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值