String类详解
配套学习资料【含授课视频、源码】:https://link3.cc/ashao
用双引号括起来的字符串,其类型
java.lang.String
1 String概述
在Java中,String
是一个类,用于表示字符串,它是Java中最常用的类之一,用于处理文本数据。
String基础内容:
-
String 类在 java.lang 包下,所以使用的时候不需要导包
-
Java 程序中所有字符串字面值(如"abc")都是 String类对象
-
字符串值不可变,
String
对象是不可变的,一旦创建,它们的值就不能被修改
常用构造方法:
案例展示:
package com.briup.chap07.test;
public class Test061_Basic {
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);
String s4 = "hello";
System.out.println(s4);
}
}
注意,字符串对象创建以后,堆空间中字符串值不可以被修改,具体如下图:
2 常见方法
String源码:
package java.lang;
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
/** The value is used for character storage. */
private final char value[];
//省略...
//获取字符串字符个数
public int length();
//比较字符串的内容,严格区分大小写
public boolean equals(Object anObject);
//返回指定索引处的 char 值
public char charAt(int index);
//将字符串拆分为字符数组后返回
public char[] toCharArray();
//根据传入的规则切割字符串,得到字符串数组
public String[] split(String regex);
//根据开始和结束索引进行截取,得到新的字符串 [begin,end)
public String substring(int begin, int end);
//从传入的索引处截取,截取到末尾,得到新的字符串 [begin,str.length())
public String substring(int begin);
//使用新值,将字符串中的旧值替换,得到新的字符串
public String replace(CharSequence target, CharSequence replacement);
}
基础案例1:
从键盘录入一行字符串,获取其长度和索引2位置上的字符,最后统计字符串中数字字符的个数。
package com.briup.chap07.test;
import java.util.Scanner;
public class Test063_Function {
public static void main(String[] args) {
//1.实例化sc对象,获取从键盘录入整行字符串
Scanner sc = new Scanner(System.in);
System.out.println("input string: ");
String str = sc.nextLine();
//2.获取字符串长度 及 索引2上的字符
System.out.println("length: " + str.length());
System.out.println("charAt(2): " + str.charAt(2));
//3.统计字符串中数字字符的个数
char[] array = str.toCharArray();
int count = 0;
//加强for循环,格式:
// for (数据类型 变量名 : 数组或集合) { }
for (char c : array) {
if(c > '0' && c < '9') {
count++;
}
}
System.out.println("数字字符个数: " + count);
}
}
登录案例2:
假设用户名和密码是"admin"和"briup",从键盘录入用户名和密码,如果匹配成功则输出"登录成功",否则输出"登录失败,用户名或密码有误!"
public static void main01(String[] args) {
//1.实例化sc对象
Scanner sc = new Scanner(System.in);
//2.从键盘分别录入用户名和密码
System.out.println("input username: ");
String username = sc.nextLine();
System.out.println("input password: ");
String password = sc.nextLine();
//3.登录校验
//注意:一般 字符串常量值.equals方法,防止空指针异常
if("admin".equals(username)
&& "briup".equals(password)) {
System.out.println("登录成功!");
}else {
System.out.println("登录失败,用户名或密码错误!");
}
}
字符串拆分案例3:
从键盘录入学生的信息,格式为:学号:姓名:分数,例:001:zs:78,请拆分学生信息并输出。
public static void main(String[] args) {
//1.实例化sc对象,获取从键盘录入学生信息
Scanner sc = new Scanner(System.in);
System.out.println("input student msg: ");
// 001:zs:78
String str = sc.nextLine();
//2.按照:进行分割
String[] arr = str.split(":");
//3.输出学生基本信息
System.out.println("id: " + arr[0]);
System.out.println("name: " + arr[1]);
//注意,分数为int类型,需要String --> int
int score = Integer.parseInt(arr[2]);
System.out.println("score: " + score);
}
字符串拆分案例4:
从键盘录入学生的信息,格式为:学号.姓名.分数,例:001.zs.78,请拆分学生信息并输出。
注意:相对上面案例,当前案例中分隔符为.
属于特殊符号,使用时需去除其特殊含义。
public static void main(String[] args) {
//1.实例化sc对象,获取从键盘录入学生字符串
Scanner sc = new Scanner(System.in);
System.out.println("input student msg: ");
// 001.zs.78
String str = sc.nextLine();
//2.字符串拆分
//特殊含义的字符,作为分隔符,需要去除其特殊含义,下面两种方式
//String[] arr = str.split("\\.");
String[] arr = str.split("[.]");
System.out.println("id: " + arr[0]);
System.out.println("name: " + arr[1]);
int score = Integer.parseInt(arr[2]);
System.out.println("score: " + score);
}
字符串截取案例5:
从键盘录入一个手机号,将中间四位号码修改为****
输出,如键盘录入 13800001234
,处理后最终效果为:138****1234
。
public static void main(String[] args) {
//1.实例化sc对象,获取手机字符串
Scanner sc = new Scanner(System.in);
System.out.println("input tel: ");
String tel = sc.nextLine();
//2.截取字符串前三位
String start = tel.substring(0,3);
//3.截取字符串后四位
String end = tel.substring(7);
//4.将截取后的两个字符串,中间加上****进行拼接,输出结果
System.out.println(start + "****" + end);
}
字符串替换案例6:
用字符串替换replace方法,重新实现上述功能。
public static void main(String[] args) {
//1.实例化sc对象,获取手机字符串
Scanner sc = new Scanner(System.in);
System.out.println("input tel: ");
String tel = sc.nextLine();
//2.截取字符串中间4位
String mid = tel.substring(3,3+4);
//3.用****替换中间4位,得到新tel
//replace不修改原始字符串,将替换后的新字符串返回
String newTel = tel.replace(mid,"****");
//4.输出新tel
System.out.println("newTel: " + newTel);
}
其他String相关方法,自行参考API学习使用。