Java之String类详解

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学习使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值