String字符串详解

String概述

"abc" + true="abctrue"

"123" + "钢门吹雪" = "123钢门吹雪"

"java是世界上最好的语言" + ".py" = "java是世界上最好的语言.py"

String的使用

比较 替换 截取 查找 切割 检索 加密 打乱内容 大小写转换 等

开发中的使用

注册一个软件的用户时的用户名和密码

软件里面聊天的字

银行app里面的数据转为中文

概述

1.java.lang.String类表示字符串 java程序中所有的字符串文字"abc"都为此类的对象

2.字符串内容不会发生改名,他的对象在创建后不能更改

3.使用时不需要导包

String str = "abc";
str = "ab";
String Str1 = "ab";
String Str2 = "c";
System.out.println(str1 + str2);

String构造方法和内存图

当直接把字符串"abc"赋值给String类型的变量时,系统会坚持该字符串是否在串池中存在。

不存在:创建新的

存在:复用

创建String对象的两种方式

1.直接赋值

String str = "abc";

 2.new

构造方法

public String() 创建空白字符串,不含任何内容

public String(Sting original) 根据传入的字符串,创建字符串

对象

public Sting(char[] chs) 根据字符数组,创建

public Sting(byte[] chs)根据字节数组,创建

//直接赋值
String str = "abc";
System.out.println(str);//ab
//使用new关键字获取一个空白字符串
String str1 = new String();
System.out.println("a" + "b");//a
//传递一个字符串
String str2 = new String("abc");
System.out.println(str2);//ab
//传递一个字符串,根据字符数组的内容再创建一个新的字符串对象
//需求:修改字符串内容,
// abc --》 {'a','b','c'} -->{'Q','b','c'} --> 'Qbc'
char[] chs = {'a','b','c'};
String str3 = new String(chs);
System.out.println(str3);//abc
//传递一个字节数组,根据字节数组内容再创建一个新的字符串对象
//应用场景:在网络中传输的数据其实都是字节信息
//我们一般要把字节信息进行转换,转换成字符串,此时需要用到这个构造方法
byte[] bytes = {97,98,99,100};
String str4 = new String(bytes);
System.out.println(str4);//abcd

Sting类型的比较

基本数据类型

int a = 10;
int b = 20;
a == b // false

String s1 = "abc";
String s2 = "abc";
s1 == s2 // true

基本数据类型比的是数据值

引用数据类型

Sting s1 = new Sting("abc");
Sting s2 = new Sting("abc");
s1 == s2 // false
Sting s1 = new Sting("abc");
Sting s2 = "abc";
s1 == s2 // false

引用数据类型比的是地址值 

字符串比较

equals方法 完全一样结果才是true否在false

//创建字符串
String str1 = new String("abc");
String str2 = "abc"
//==比较
System.out.println(str1 == str2);//false
//equals比较
System.out.println(str1.equals(str2));//true

 equalslgnoreCase 忽略大小写

//创建字符串
String str3 = new String("abc");
String str4 = "Abc"
//==比较
System.out.println(str3 == str4);//false
//equalsIgnoreCase比较,忽略大小写
System.out.println(str3.equalsIgnoreCase(str4));//true

 键盘录入

//键盘录入abc
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String str1 = sc.next();
String str2 = "abc";
//==比较
System.out.println(str2 == str1);//false
sc.close();

他的底层代码实现是new出来的,所以两者比较为false

结论:如果你以后想比较字符串里面的内容,就必须使用String里面的方法

场景:登录用户,用户名以及密码的匹配等

package edu.test;

import java.util.Scanner;

/**
 * 功能:已知正确的用户名和密码
 *      模拟用户登录
 *      三次错误后禁止输入
 * 作者:程序员技术流er
 * 日期:2023/12/13 13:47
 */
public class LoginTest {
    public static void main(String[] args) {
        //正确的用户名和密码
        String RightUsername = "alice";
        String RightPassword = "123456";

        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 3 ; i++) {
            //模拟用户登录
            System.out.println("请输入用户名");
            String username = sc.next();
            System.out.println("请输入密码");
            String password = sc.next();

            //比较
            if (username.equals(RightUsername) && password.equals(RightPassword)){
                System.out.println("登录成功");
                break;
            }else {
                if (i == 2){
                    //最后一次机会,提示账号被锁定
                    System.out.println("账号" + username + "被锁定,请联系管理员");
                }else {
                    System.out.println("用户名密码错误,您还剩下" + (2-i) +"次机会");
                }

            }
        }
        sc.close();
    }
}

String遍历

//键盘录入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String str = sc.next();
//遍历
for (int i = 0; i < str.length(); i++) {
    char c = str.charAt(i);
    System.out.println(c);
}

charAt(int index)方法

 不能通过foreach去遍历

 数字转中文数字

public static String getChineseNumber(int number){
	String[] arr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
	return arr[number];
}

StringBuilder概述

1.概述

StringBuilder可以看作是一个容器,创建之后里面的内容是可变的

作用:提高字符串的操作效率

2.StringBuilder构造方法

public StringBuilder() 创建一个空白可变的字符串对象,没有任何内容

public StringBuilder(String str) 根据字符串的内容,来创建可变字符串对象

3.StringBuilder常用方法

public StringBuilder append() 添加数据,并返回对象本身

public StringBuilder reverse() 反转容器中的内容

public int length() 返回长度

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

StingJoiner概述

        StingJoiner构造方法

                public StingJoiner(间隔符合)

创建StringSJoiner对象,指定拼接的间隔符合

StingJoiner sj = new StingJoiner("---");

                 public StingJoiner(间隔符合,开始符合,结束符合)

创建一个StringJoiner对象,指定拼接的间隔符合、开始符合、结束符合

StingJoiner sj = new StingJoiner("," , "[" , "]");

StingJoiner成员方法 

public StingJoiner add(添加的内容)

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

StingJoiner sj = new StingJoiner("---");
sj.add("aaa").add("bbb");
StingJoiner sj1 = new StingJoiner(", " , "[" , "]");
sj1.add("aaa").add("bbb").add("ccc");//[aaa, bbb, ccc]
sj1.length(); //15
String str = sj.toString();

public StingJoiner length() 

返回长度(字符出现的个数)

public StingJoiner toString()

返回一个字符串(该字符串就是拼接之后的结果)

总结

String

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

StringBuilder

一个可变的操作字符串的容器。

可以高效的拼接字符串,还可以将容器里面的内容反转。

StringJoiner

JDK8出现的一个可变的操作字符串的容器,可以高效的,方便的拼接字符串。

在拼接的时候可以指定间隔符号,开始符合,结束符合。

  • 36
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值