常用API

  • 什么是API

应用程序编程接口

  • java中的API

指的就是JDK中提供的各种功能的java类,这些类将底层的实现封装了起来,我们不需要关心这些类是怎么实现的,只需要学习这些类如何让使用即可,可以通过帮助文档学习API的使用

键盘录入字符串

Scanner类:
  • next();遇到空格,就不再录入数据了,结束标记: 空格,tab键
  • nextLine(); 可以将数据完整的接收过来, 结束标记回车换行符
代码实现:
package com.shizhanban.api;
import java.util.Scanner;
public class Demo1Scanner {
    /*
        next() : 遇到了空格, 就不再录入数据了

                结束标记: 空格, tab键

        nextLine() : 可以将数据完整的接收过来

                结束标记: 回车换行符
     */
    public static void main(String[] args) {
        // 1. 创建Scanner对象
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        // 2. 调用nextLine方法接收字符串
        // ctrl + alt + v : 快速生成方法的返回值
        String s = sc.nextLine();

        System.out.println(s);
    }
}
package com.shizhanban.api;

import java.util.Scanner;

public class Demo2Scanner {
    /*
        nextInt和nextLine方法配合使用的时候, nextLine方法就没有键盘录入的机会了

        建议: 今后键盘录入数据的时候, 如果是字符串和整数一起接收, 建议使用next方法接受字符串.
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入整数:");
        int num = sc.nextInt(); // 10 + 回车换行
        System.out.println("请输入字符串:");
        String s = sc.nextLine();


        System.out.println(num);
        System.out.println(s);
    }
}

String类

概述:

  1. String类在java.lang包下,所以使用时不用导包
  2. String类代表字符串,java程序中所有的双引号字符串, 都是String类的对象
  3. 字符串不可变,他们的值在创建后不能被更改

String类的构造方法

常用的构造方法

方法名

说明

public String()

创建一个空白字符串对象,不含有任何内容

public String(char[] chs)

根据字符串数组的内容,来创建字符串对象

public String(String original)

根据传入的字符串内容,来创建字符串对象

String s = “abc”;

直接赋值的方式创建字符串对象,内容就是abc

代码示例
package com.shizhanban.string;

public class Demo2StringConstructor {
    /*
        String类常见构造方法:

    public String() : 创建一个空白字符串对象,不含有任何内容
    public String(char[] chs) : 根据字符数组的内容,来创建字符串对象
    public String(String original) : 根据传入的字符串内容,来创建字符串对象
    String s = “abc”;  直接赋值的方式创建字符串对象,内容就是abc

     注意:
     String这个类比较特殊, 打印其对象名的时候, 不会出现内存地址
      而是该对象所记录的真实内容.

                面向对象-继承, Object类
     */
    public static void main(String[] args) {
        // public String() : 创建一个空白字符串对象,不含有任何内容
        String s1 = new String();
        System.out.println(s1);

        // public String(char[] chs) : 根据字符数组的内容,来创建字符串对象
        char[] chs = {'a','b','c'};
        String s2 = new String(chs);
        System.out.println(s2);

        // public String(String original) : 根据传入的字符串内容,来创建字符串对象
        String s3 = new String("123");
        System.out.println(s3);
    }
}

创建字符串对象的区别对比

  • 通过构造方法创建

通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同

  • 直接赋值方式创建

以""方式给出的字符串,只要字符串序列相同(顺序和大小写),无论在程序代码中出现几次,JVM都只会建立一个String对象,并在字符串串池中维护

字符串的比较

  • ==比较基本数据类型: 比较的是具体的值
  • ==比较引用数据类型: 比较的是对象的地址值

String类 :public boolean equals(String s) 比较两个字符串内容是否相同,区分大小写

代码
package com.shizhanban.stringmethod;

public class Demo1Equals {
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "ABC";
        String s3 = "abc";

        // equals : 比较字符串内容, 区分大小写
        System.out.println(s1.equals(s2));
        System.out.println(s1.equals(s3));

        // equalsIgnoreCase : 比较字符串内容, 忽略大小写
        System.out.println(s1.equalsIgnoreCase(s2));
    }
}

小结

String类的常用方法
  • public String replace(CharSequence target, CharSequence replacement)使用新值,将字符串中的旧值替换,得到新的字符串
  • public int length()返回此字符串的长度
  • public boolean equals(Object anObject)比较字符串的内容,区分大小写
  • public boolean equalsIgnoreCase(String anotherString)比较字符串的内容, 忽略大小写
  • public String substring(int beginlndex , int endlndex)根据开始和结束索引进行截取,得到新的字符串(包含头,不包含尾)
  • public String substring(int beginlndex )从传入的索引处截取,截取到末尾,得到新的字符串
  • public String[] split(String regex)根据传入的规则切割字符串,得到字符串数组
  • public char[] toCharArray() 将字符串拆分为字符数组后返回
  • public char charAt(int index) 返回指定索引处的char值
  • trim() 去除字符串两侧的空格
获取字符串中的某一个字符

字符串.CharAt(字符下标)

String name="张三";
System.out.prinln(name.CharAt(1))
从字符串中截取字串 .subString();

使用场景:手机号脱敏

String name="我是奥特曼";
 String substring = name.substring(2);
 System.out.println(substring);
  • 如果只传一个参数,代表从指定的数字直接截取到字符串最后
  • 传两个参数,代表从指定的第一个数字一直截取到指定的第二个位置数字(包括开始,不包括结束)
字符串替换 .replace();
String name="这里是软件技术实战班";
String replace = name.replace("软件技术", "移动应用");
System.out.println(replace);
字符串截取成字串 .split();
String name="今天天气真tmd不错,挺好的,是时候出去溜达溜达了";
String[] split = name.split(",");
for (int i = 0; i < split.length; i++) {
    System.out.println(split[i]);
}

StringBuilder类

概述

StringBuilder是一个可变的字符串类,我们可以把它看成一个容器,这里的可变指的是StringBuilderer对象中的内容是可变的

StringBuilder类和String类的区别

  • String类: 内容是不可变的
  • StringBuilder类: 内容是可变的

StringBuilder类的构造方法

常用的构造方法

方法名

说明

public StringBuilder()

创建一个空白可变字符串,不含有任何内容

public StringBuilder(String str)

根据字符串的内容,来创建可变字符串对象

示例代码
public class StringBuilderDemo01 {
    public static void main(String[] args) {
        //public StringBuilder():创建一个空白可变字符串对象,不含有任何内容
        StringBuilder sb = new StringBuilder();
        System.out.println("sb:" + sb);
        System.out.println("sb.length():" + sb.length());

        //public StringBuilder(String str):根据字符串的内容,来创建可变字符串对象
        StringBuilder sb2 = new StringBuilder("hello");
        System.out.println("sb2:" + sb2);
        System.out.println("sb2.length():" + sb2.length());
    }
}

StringBuilder常用的成员方法

添加和反转方法

方法名

说明

public StringBuilder append(任意类型)

添加数据,并返回对象本身

public StringBuilder reverse()

返回相反的字符序列

示例代码
public class StringBuilderDemo01 {
    public static void main(String[] args) {
        //创建对象
        StringBuilder sb = new StringBuilder();

        //public StringBuilder append(任意类型):添加数据,并返回对象本身
//        StringBuilder sb2 = sb.append("hello");
//
//        System.out.println("sb:" + sb);
//        System.out.println("sb2:" + sb2);
//        System.out.println(sb == sb2);

//        sb.append("hello");
//        sb.append("world");
//        sb.append("java");
//        sb.append(100);

        //链式编程
        sb.append("hello").append("world").append("java").append(100);

        System.out.println("sb:" + sb);

        //public StringBuilder reverse():返回相反的字符序列
        sb.reverse();
        System.out.println("sb:" + sb);
    }
}

StringBuilder和String相互转换

  • StringBuilder转换为String

public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String

  • String转换为StringBuilder

public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder

示例代码
public class StringBuilderDemo02 {
    public static void main(String[] args) {
        /*
        //StringBuilder 转换为 String
        StringBuilder sb = new StringBuilder();
        sb.append("hello");

        //String s = sb; //这个是错误的做法

        //public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String
        String s = sb.toString();
        System.out.println(s);
        */

        //String 转换为 StringBuilder
        String s = "hello";

        //StringBuilder sb = s; //这个是错误的做法

        //public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder
        StringBuilder sb = new StringBuilder(s);

        System.out.println(sb);
    }
}

字符串拼接

简单的字符串拼接使用+号即可,但遇到复杂情况,一般使用StringBuilder进行字符串的拼接与构造工作