String 概述
-
java.lang.String 类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串。
-
java程序中的所有字符串文字( 例如:“abc“ )都是此类的对象。
String name = "小黑" ; String schoolname = "Tom" ;
String类的特点详解
- String其实常被称为不可变字符串类型,它的对象在创建后不能被更改。
String是不可变字符串的原因?
- String变量每次的修改其实都是产生并指向了新的字符串对象。
- 原来的字符串对象都是没有改变的,所以称不可变字符串。
String创建字符串对象的两种方式
-
直接使用 " " 定义。(推荐方式)
String name = "内容" ;
-
通过String类的构造器创建对象
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5R9RxCaT-1649840351390)(C:\Users\gwang\Desktop\Strings.png)]
两种创建方式的区别
- 以 " " 方式给出的字符串对象字符串常量池中存储,并且相同内容只存一份。
- 构造器new对象,每new一次都会产生一个新对象,放在堆内存中分开存储。
String 字符串内容比较(equals)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tVspoVF4-1649840351398)(C:\Users\gwang\Desktop\equals.png)]
字符串变量.equals(要比较的内容); // 如果相等返回true,否则返回false
字符串变量.equalsIgnoreCase(要比较的内容); // 如果相等返回true,否则返回false 并且 不区分大小写
String 常用方法
String name = "测试java中的String字符串内容";
// 变量名.length() ---- 字符串的长度
int a = name.length();
System.out.println(a); // 输出19
// 变量名.charAt() ---- 获取字符串某个索引对应的字符
System.out.println( name.charAt(2) ); // 输出索引值为2的字符【是 j 】
// 利用length和charAt遍历字符串中的每个字符
for (int i=0;i<name.length();i++) {
System.out.print( name.charAt(i) +" " );
}
// 变量名.subString(第一个索引值,第二索引值) ---- 当前索引截取到指定索引(包前不包后)
String sub = "String功能很强大";
String rs1 = sub.substring(6, 8); // 截取 功能
System.out.println( rs1 ); // 输出 功能
// 变量名.subString(索引值) ---- 当前索引截取到末尾
String rs2 = sub.substring(6); // 截取 功能很强大
System.out.println( rs2 ); // 输出 功能很强大
// 变量名.replace(要替换的内容,替换词) ---- 将第二个值替换成第一个值
String rep = "小高是一个可爱的00后,小高非常棒,小高有好多零食。";
String cs1 = rep.replace("小高", "**");
System.out.println( cs1 );
// 变量名.contains(内容) ---- 测试该字符串中是否有你写的内容 【返回类型 Boolean】
System.out.println( rep.contains("小孩") );
System.out.println( "rep字符串中是否有非常?"+ rep.contains("非常") );
// 变量名.startsWith(内容) ---- 判断是不是你写的内容开头 【返回类型 Boolean】
System.out.println( rep.startsWith("小孩") );
System.out.println( "rep字符串中是不是以小高开头?"+ rep.startsWith("小高") );
/*
* 例题:用户输入电话号码,要求中间四位用*代替 158****7211
* 分析: 用subString把中间四位截取出来用*代替 替换用replace方法
变量名.subString(第一个索引值,第二索引值) ---- 当前索引截取到指定索引(包前不包后)
变量名.replace(要替换的内容,替换词) ---- 将第二个值替换成第一个值
*/
import java.util.Scanner;
public class SubString {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner nums = new Scanner(System.in);
System.out.print("请输入您的手机号:");
String s = nums.next(); // Scanner输入
String si = s.substring(3, 7); // 截取中间四位 赋值给si变量
s = s.replace(si, "****"); // 将截取的四位数替换成**** 并赋值给输入的手机号的变量
System.out.print(s);
} // main
}
// 例题: 随机生成一个五位的验证码,可以是大写字母、小写、数字
import java.util.Random;
public class StringCode {
public static void main(String[] args) {
// TODO Auto-generated method stub
String codes="abcdefghijklmnopkrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random r = new Random();
String yzm ="" ; // 用来存验证码
for (int i=0;i<=4;i++) {
int index = r.nextInt(codes.length()); // 获取字符串中随机的一个索引值
yzm += codes.charAt(index); // 根据索引值获取内容 并且 赋值给 yzm变量
}
System.out.print(yzm);
}
}