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 // falseString 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出现的一个可变的操作字符串的容器,可以高效的,方便的拼接字符串。
在拼接的时候可以指定间隔符号,开始符合,结束符合。