0
点赞
收藏
分享

微信扫一扫

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder


文章目录

  • ​​1.API​​
  • ​​1.1 API概述-帮助文档的使用​​
  • ​​1.2 键盘录入字符串​​
  • ​​2. String类​​
  • ​​2.1 String概述​​
  • ​​2.2 String类的构造方法​​
  • ​​2.4 创建字符串对象的区别对比​​
  • ​​2.5 字符串的比较​​
  • ​​2.5.1 字符串的比较​​
  • ​​2.6 用户登录案例【应用】​​
  • ​​2.7 遍历字符串案例【应用】​​
  • ​​2.8 手机号屏蔽-字符串截取 substring​​
  • ​​2.9 敏感词替换-字符串替换 replace​​
  • ​​2.10 切割字符串 split​​
  • ​​2.11 String方法小结 ★★​​
  • ​​3 StringBuilder类​​
  • ​​3.1 StringBuilder类概述​​
  • ​​3.2 StringBuilder类和String类的区别​​
  • ​​3.3 StringBuilder类的构造方法​​
  • ​​3.4 StringBuilder常用的成员方法​​
  • ​​3.5StringBuilder和String相互转换【应用】​​
  • ​​3.6 StringBuilder拼接字符串案例​​

1.API

1.1 API概述-帮助文档的使用

  • 什么是API
    API (Application Programming Interface) :应用程序编程接口
  • java中的API
    指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。

如何使用API帮助文档 :

  • 打开帮助文档
  • 找到索引选项卡中的输入框
  • 在输入框中输入Random
  • 看类在哪个包下
  • 看类的描述
  • 看构造方法
  • 看成员方法

jdk_API_1.6.CHM 是汉化得最好的一个版本,建议还是使用1.6.chm

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_string类

1.2 键盘录入字符串

Scanner类 :

next() : 遇到了空格, 就不再录入数据了 , 结束标记: 空格, tab键

nextLine() : 可以将数据完整的接收过来 , 结束标记: 回车换行符

代码实现 :

next类型() 正常录入 【即:空格,enter, tab 作为分隔开符号】

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x=sc.nextInt();//遇到了空格, 就不再录入数据了 , 结束标记: 空格, tab键
System.out.println(x);
}

测试一:

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_键盘录入_02


测试二:

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_string类_03


测试三:

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_字符串_04

多次录入分隔符测试:

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
System.out.println("x = " + x);
int y = sc.nextInt();
System.out.println("y = " + y);
}

enter作为分隔符:

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_键盘录入_05


空格分隔符:

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_键盘录入_06


多个空格分隔符:

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_字符串_07


TAB分隔符:

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_java_08

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String ss=sc.nextLine();//录入一行 必须是String
System.out.println(ss);
}

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_java_09

没有nextString(), 所以next()就是nextString()

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String ss=sc.next();//正常录入String 因为没有nextString()
System.out.println(ss);
}

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_字符串_10

nextInt和nextLine方法配合使用的时候, nextLine方法就没有键盘录入的机会了
建议: 今后键盘录入数据的时候, 如果是字符串和整数一起接受, 建议使用next方法接受字符串

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x=sc.nextInt();
System.out.println("x = " + x);
String ss=sc.nextLine();//正常录入String 因为没有nextString()
System.out.println(ss);
}

enter直接bug似的

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_键盘录入_11


空格好一点 10后开始录入一行

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_java_12


明确了类型就用明确类型比较好,但是千万注意只要之前有过输入nextLine不等你再输入自己就去读了

LX:录入 int string double string

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x=sc.nextInt();
System.out.println("x = " + x);
String ss=sc.next();//正常录入String 因为没有nextString()
System.out.println("ss = " + ss);
double dd=sc.nextDouble();
System.out.println("dd = " + dd);
ss=sc.next();
System.out.println("ss = " + ss);
}

正常enter分隔符:

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_java_13


一行空格、TAB分隔符:(和c/c++一样正常了)

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_string类_14

2. String类

2.1 String概述

1 String 类在 java.lang 包下,所以使用的时候不需要导包

2 String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象

3 字符串不可变,它们的值在创建后不能被更改

2.2 String类的构造方法

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_字符串_15


千万注意是java.lang包下的String不是其他什么包下的,否则会有奇怪的错误

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

// public String(char[] chs) : 根据字符数组的内容,来创建字符串对象
char[] chs={'a','b','c'};
//System.out.println("chs = " + chs);//不像c、c++ cs不是首地址了 不能直接这么输出了
String s2= new String(chs);
System.out.println("s2 = " + s2);

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

// 直接"zifucuan"赋值 最简单方式
String s4="直接赋值";
System.out.println("s4 = " + s4);
}

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_字符串_16

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

  • 通过构造方法创建
    通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同
  • 直接赋值方式创建 所以还是推荐简单的方式咯
    以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池中维护

2.5 字符串的比较

2.5.1 字符串的比较

  • == 比较基本数据类型:比较的是具体的值
  • == 比较引用数据类型:比较的是对象地址值 (除非重写equals方法)

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

代码 :

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

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

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

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_string类_17

2.6 用户登录案例【应用】

案例需求 :

已知用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录之后,给出相应的提示

**实现步骤 : **

  1. 已知用户名和密码,定义两个字符串表示即可
  2. 键盘录入要登录的用户名和密码,用 Scanner 实现
  3. 拿键盘录入的用户名、密码和已知的用户名、密码进行比较,给出相应的提示。
  4. 字符串的内容比较,用equals() 方法实现
  5. 用循环实现多次机会,这里的次数明确,采用for循环实现,并在登录成功的时候,使用break结束循

代码实现 :

import java.util.Scanner;

public class StringLX_ThreeLogin {
public static String USERNAME="admin";
public static String PASSWORD="123";
public static void main(String[] args) {
int T=3;
Scanner sc = new Scanner(System.in);

for(int i=1;i<=T;i++){
System.out.print("请输入用户名(enter结束):");
String username=sc.nextLine();
System.out.print("请输入密码(enter结束):");
String password = sc.nextLine();

if(USERNAME.equals(username)&&PASSWORD.equals(password)){
System.out.println("登录成功~");
break;
}else {
System.out.print("登录失败!");
int t=T-i;
if(t>0) System.out.println(" 您还有"+t+"次机会重新登录~");
else {
System.out.println("今天登录机会用完~");
break;
}
}
}
}
}

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_键盘录入_18

2.7 遍历字符串案例【应用】

案例需求 :

键盘录入一个字符串,使用程序实现在控制台遍历该字符串

实现步骤 :

  1. 键盘录入一个字符串,用 Scanner 实现
  2. 遍历字符串,首先要能够获取到字符串中的每一个字符, public char charAt(int index):返回指定索引处的char值,字符串的索引也是从0开始的
  3. 遍历字符串,其次要能够获取到字符串的长度, public int length():返回此字符串的长度
  4. 遍历打印

简而言之:将java String 拆开来一个字符一个字符地输出

代码实现 :

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s=sc.nextLine();
for(int i=0;i<s.length();i++){
System.out.println(s.charAt(i));
//System.out.println(s[i]);//编译不过 不能像C++那样下标访问
}

System.out.println("想C++那样数组访问:");
char[] chs = s.toCharArray();//转换为字符数组即可
for(int i=0;i<chs.length;i++){
System.out.print(chs[i]+" ");
}
}

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_java_19

2.8 手机号屏蔽-字符串截取 substring

案例需求 :

​ 以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽
​ 最终效果为:156****1234

实现步骤 :

  1. 键盘录入一个字符串,用 Scanner 实现
  2. 截取字符串前三位
  3. 截取字符串后四位
  4. 将截取后的两个字符串,中间加上****进行拼接,输出结果

代码实现 :

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String start = s.substring(0,3);//左闭右开 [0,3) 也就是 0 1 2 下标0到下标(3-1)
String end= s.substring(7);//7往后截取完毕
System.out.println(start+"****"+end);
}

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_键盘录入_20

2.9 敏感词替换-字符串替换 replace

案例需求 :

键盘录入一个 字符串,如果字符串中包含(TMD),则使用***替换

实现步骤 :

  1. 键盘录入一个字符串,用 Scanner 实现
  2. 替换敏感词
    String replace(CharSequence target, CharSequence replacement)
    将当前字符串中的target内容,使用replacement进行替换,返回新的字符串
  3. 输出结果

代码实现 :

public static void main(String[] args) {
String s="ATMDONE";
String newS= s.replace("TMD","***");
System.out.println(newS);
System.out.println(s);//本身不改变 不动内存 只是创造副本
//replace(被替换子串,替换后内容);
}

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_string类_21

2.10 切割字符串 split

案例需求 :

以字符串的形式从键盘录入学生信息,例如:“张三 , 23”

从该字符串中切割出有效数据,封装为Student学生对象

实现步骤 :

  1. 编写Student类,用于封装数据
  2. 键盘录入一个字符串,用 Scanner 实现
  3. 根据逗号切割字符串,得到(张三)(23)
    String[] split(String regex) :根据传入的字符串作为规则进行切割
    将切割后的内容存入字符串数组中,并将字符串数组返回
  4. 从得到的字符串数组中取出元素内容,通过Student类的有参构造方法封装为对象
  5. 调用对象getXxx方法,取出数据并打印。

代码实现 :

public class StringSplit {
public static void main(String[] args) {
String s="云天河,18";
String[] strs = s.split(",");// 传chat ‘,’报错 只能传递String ","
Student stu = new Student(strs[0], Integer.parseInt(strs[1]));
System.out.println(stu.getName()+" "+stu.getAge());
}
}

class Student{
private String name;
private Integer age;

public Student(String name, Integer age) {
this.name = name;
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}
}

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_字符串_22

2.11 String方法小结 ★★

String类的常用方法 :

public boolean equals(Object anObject)  比较字符串的内容,严格区分大小写

public boolean equalsIgnoreCase(String anotherString) 比较字符串的内容,忽略大小写

public int length() 返回此字符串的长度

public char charAt(int index) 返回指定索引处的 char

public char[] toCharArray() 将字符串拆分为字符数组后返回

public String substring(int beginIndex, int endIndex) 根据开始和结束索引进行截取,得到新的字符串(包含头,不包含尾)

public String substring(int beginIndex) 从传入的索引处截取,截取到末尾,得到新的字符串

public String replace(CharSequence target, CharSequence replacement) 使用新值,将字符串中的旧值替换,得到新的字符串

public String[] split(String regex)

3 StringBuilder类

3.1 StringBuilder类概述

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

3.2 StringBuilder类和String类的区别

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

3.3 StringBuilder类的构造方法

常用的构造方法

方法名

说明

public StringBuilder()

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

public StringBuilder(String str)

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

public static void main(String[] args) {
StringBuilder sb1 = new StringBuilder();
System.out.println("sb1 = " + sb1);
System.out.println("sb1.length = "+sb1.length());

StringBuilder sb2 = new StringBuilder("hello");
System.out.println("sb2 = " + sb2);
System.out.println("sb1.length = "+sb2.length());
}

3.4 StringBuilder常用的成员方法

  • 添加和反转方法

方法名

说明

public StringBuilder append(任意类型)

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

public StringBuilder reverse()

返回相反的字符序列

  • 示例代码

public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
//public StringBuilder append(任意类型):添加数据,并返回对象本身
//sb.append() 看代码提示 可以append 任意类型
sb.append("hello").append(123).append(" world").append(567.789);
System.out.println(sb);//直接修改了 sb 本身
System.out.println();
sb.reverse();
System.out.println(sb);
System.out.println(sb.reverse());
}

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_字符串_23

3.5StringBuilder和String相互转换【应用】

  • StringBuilder转换为String
    public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String
  • String转换为StringBuilder
    public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder
  • 示例代码

public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("hello");
// String s=sb; 报错
String s=sb.toString();
System.out.println("s = " + s);

System.out.println("---------------------------------");
String s1="hello";
// StringBuilder sb1=s1; //报错
StringBuilder sb1 = new StringBuilder(s1);
System.out.println("sb1 = " + sb1);
}

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_string类_24

3.6 StringBuilder拼接字符串案例

案例需求 :

定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,

并在控制台输出结果。例如,数组为int[] arr = {1,2,3}; ,执行方法后的输出结果为:[1, 2, 3]

实现步骤 :

  1. 定义一个 int 类型的数组,用静态初始化完成数组元素的初始化
  2. 定义一个方法,用于把 int 数组中的数据按照指定格式拼接成一个字符串返回。
    返回值类型 String,参数列表 int[] arr
  3. 在方法中用 StringBuilder 按照要求进行拼接,并把结果转成 String 返回
  4. 调用方法,用一个变量接收结果
  5. 输出结果

代码实现 :

public class SB03_intToString {
public static void main(String[] args) {
int[] arr={1,2,3,4};
String str = IntArrayToString(arr);
System.out.println("str = " + str);
System.out.println("str.length = " + str.length());
}

public static String IntArrayToString(int[] arr){
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length-1; i++) {
sb.append(arr[i]+",");//sb.append的好处 不用进行类型转换 可以传入任意类型
}
sb.append(arr[arr.length-1]+"]");
//StringBuilder用来执行操作 String用来返回使用
return sb.toString();
}
}

07-API1-常用API chm使用、Scanner(录入一行&正常录入)、String&StringBuilder_字符串_25


举报

相关推荐

0 条评论