目录
1、String的构造方法
2、String内存模型
3、字符串的比较
4、字符串的练习
1、用户登录系统
2、遍历字符串
3、统计字符次数
4、拼接字符串
5、字符串的反转
6、金额转换
7、手机号屏蔽 *
8、身份证信息查看
9、敏感词替换
5、StringBuilder
1、概念及练习
2、链式编程思想
3、小练习
6、StringJoiner
1、概念
7、总结
1、String的构造方法
public class StringTest {public static void main(String[] args) {//1、使用直接赋值的方式获取到一个字符串对象String s1 = "我";String s2 = "晓";String s3 = s1 + s2 ;System.out.println(s3 + "!");//2、使用new的方式来获取一个字符串的对象//空参构造:获取一个空白的字符串对象String S1 = new String();System.out.println("@" + S1 + "!");//3、有参构造//p:传递一个字符串,根据传递的字符串再创建一个新的字符串对象!String S2 = new String("xh");System.out.println(S2);//传递一个字符串数组。根据字符数组的内容在创建一个新的字符串对象//需求:我想修改字符串的内容。abc ——> qbc//abc --> {'a','b','c'} --> {'q','b','c'} --> qbcchar[] c1 = {'a','b','c'};String C1 = new String(c1);System.out.println(C1);//传递一个字节数组,根据字节数组的内容再创建一个新的字符串对象//应用场景:在网路传输中的数据都是字节信息。//一般把字节信息进行转换,转换成字符。而此时就会用到这个构造。byte[] b1 = {97,98,99,100}; //把这些数字转换成ascii码值,再进行拼接。String B1 = new String(b1);System.out.println(B1);}
}
2、String内存模型
3、字符串的比较
public class StringDemo {public static void main(String[] args) {//1、创建两个字符串对象String s1 = "abc";String s2 = new String("Abc");//2、==号的比较//如果是基本数据类型,比的是数据值//如果是引用数据类型,比的就是地址值System.out.println(s1 == s2); //false//3、比较字符串对象的内容是否相等Boolean result1 = s1.equals(s2); //equals比较的对象要完全一样。System.out.println(result1); //false//4、比较字符串对象的内容是否相等,忽略大小写。//1 一 这不行 只涉及英文Boolean result2 = s1.equalsIgnoreCase(s2);System.out.println(result2); //true}
}
4、字符串的练习
1、用户登录系统
import java.util.Scanner;public class StringDemo3 {public static void main(String[] args) {//读题拆解法//定义两个变量记录正确的用户名和密码String rightUsername = "晓红";String rightPassword = "521";//键盘录入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();//比较int count = 3;if (username.equals(rightUsername) && password.equals(rightPassword)) {System.out.println("用户登录成功!");break;} else {if (i == 2){//tips 提示最后一次机会!System.out.println("账号" + username + "被锁定,请联系汝祥来解锁!");}else{System.out.println("用户登录失败,用户名或密码错误!您还剩下" + (2 - i) + "次机会!");}}}}
}
2、遍历字符串
import java.util.Scanner;public class StringDemo4 {public static void main(String[] args) {//键盘录入字符串Scanner sc = new Scanner(System.in);//tipsSystem.out.println("请输入一个字符串");String s1 = sc.next();//遍历for (int i = 0; i < s1.length(); i++) {// i 依次表示字符串的每一个索引char c = s1.charAt(i);//charAt是一个字符串类(String)的方法;//用于获取指定位置的字符。它接受一个参数,该参数表示要从字符串中获取字符的索引位置。//索引从0开始,表示字符串中的第一个字符。通过使用charAt方法,您可以检索到字符串中任何位置的特定字符。//例如://String str = "Hello, World!";//char ch = str.charAt(7);//System.out.println(ch);System.out.println(c);}}
}
3、统计字符次数
import java.util.Scanner;public class StringDemo5 {public static void main(String[] args) {//1、键盘录入一个字符串Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");String str = sc.next();//2、统计//定义三个计数器int bigCount = 0;int smallCount = 0;int numberCount = 0;for (int i = 0; i < str.length(); i++) {// i 依次表示字符串中每一个索引char c = str.charAt(i);if(c >= 'a' && c < 'z'){//char类型的变量在参与计算的时候自动提升为int,查询ascii码表。smallCount++;}else if(c >= 'A' && c <= 'Z'){bigCount++;}else if(c >= '0' && c <= '9'){numberCount++;}}//输出打印System.out.println("小写字母有" + smallCount + "个");System.out.println("大写字母有" + bigCount + "个");System.out.println("数字符号有" + numberCount + "个");}
}
4、拼接字符串
public class StringDemo6 {public static void main(String[] args) {//我要干嘛? -- 遍历数组,并把数组拼接成字符串//我干这件事需要什么才能完成? -- 数组//我干完了是否要把结返回调用处。-- 返回一个拼接的字符串//如果返回了,是否继续使用//如果不使用,那么可以返回也可以不返回。int[] arr = {1, 2, 3};String str = arrToString(arr);System.out.println(str);}public static String arrToString(int[] arr) {if (arr == null) {return "";}if (arr.length == 0) {return "[]";}//当代码执行到这表示什么?//表示数组不是null,长度也不为0String result = "[";for (int i = 0; i < arr.length; i++) {//i 索引 arr[i] 元素if (i == arr.length - 1) {result = result + arr[i];} else {result = result + arr[i] + ", ";}}result = result + "]";return result;}
}
5、字符串的反转
import java.util.Scanner;public class StringDemo7 {public static void main(String[] args) {//键盘录入Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");String str = sc.next();//调用String s1 = reverser(str);System.out.println(s1);}//我要干嘛? -- 将字符串倒着//我干这件事需要什么? --索引数据。将数据重新赋值给变量//做完之后,是否需要返回//调用处是否需要继续使用方法的结果呢?public static String reverser(String str) {//abc --> cbaString result = "";for (int i = str.length() - 1; i >= 0; i--) {//i 表示字符串中的每一个索引(倒着的)char c = str.charAt(i);result = result + c;}return result;}
}
6、金额转换
import java.util.Scanner;public class StringDemo8 {public static void main(String[] args) {//1. 键盘录入金额Scanner sc = new Scanner(System.in);int money; // 用于存储金额的变量while (true) {System.out.println("请录入一个金额");money = sc.nextInt();// 判断金额是否在有效范围内if (money >= 0 && money <= 9999999) {break;} else {System.out.println("金额无效!");}}//2. 定义一个变量来表示钱的大写String moneyStr = "";//3. 得到money里面的每一个数字while (true) {// 从右往左获取数字,因为右侧是数字的个位int ge = money % 10; // 取余,得到个位数//4. 调用方法将数字转换为大写的中文数字String n1 = getNumber(ge);// 将转换后的大写数字拼接到moneyStr的前面moneyStr = n1 + moneyStr;// 去掉刚才获取到的数字money = money / 10;// 如果数字上的每一个数字全部获取到了,那么money记录的就是0,此时循环就结束。if (money == 0) {break;}}//5. 在前面补零,补齐七位int count = 7 - moneyStr.length(); // 需要补零的个数for (int i = 0; i < count; i++) {moneyStr = "零" + moneyStr;}System.out.println(moneyStr);//6. 插入单位String[] arr = {"佰", "拾", "万", "仟", "佰", "拾", "元"};String result = ""; // 存储最终的结果for (int i = 0; i < moneyStr.length(); i++) {char c = moneyStr.charAt(i);result = result + c + arr[i];}System.out.println(result);}// 定义一个方法,将数字转换为大写的中文数字public static String getNumber(int number) {// 定义数组,存储大写的中文数字String[] arr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};// 返回结果 return arr[number];}
}
7、手机号屏蔽 *
在Java中,可以使用 substring() 方法来截取字符串的子串。substring() 方法有两种重载形式,可以根据起始位置和结束位置或者只根据起始位置来截取子串。
public class StringDemo9 {public static void main(String[] args) {//1、获取一个手机号码String phoneNumber = "17682973508";//2、截取手机号的前面三String p1 = phoneNumber.substring(0,3);//System.out.println(p1);//3、截取手机号码后四位String p2 = phoneNumber.substring(7);//从第七位开始往后进行截取//System.out.println(p2);//4、拼接String result = p1 + "****" + p2;System.out.println(result);}
}
8、身份证信息查看
public class StringDemo10 {public static void main(String[] args) {//1、定义一个字符串用来记录身份证号码String id = "341623200306193750";//2、获取出生年月日String year = id.substring(6,10);String month = id.substring(10,12);String day = id.substring(12,14);//3、获取性别char gender = id.charAt(16); // '5'//利用ascii码表进行转换//gender会转换成ascii值 '5' -- 53 '0' -- 48int num = gender - 48;//System.out.println(num);//进行奇偶判断if (num % 2 == 0){System.out.println("性别为:女");}else{System.out.println("性别为:男");}}
}
9、敏感词替换
在Java中,你可以使用 replace() 方法来替换字符串中的特定字符或子串。这个方法接受两个参数:要替换的目标字符串和用于替换的新字符串。
public class StringDemo11 {public static void main(String[] args) {//1、获取到说的话。String talk = "你玩的真好,下次不要玩了,TMD,SB!";//2.1 定义一个敏感词库String[] arr = {"TMD","CNM","MLGB","SB","NM"};//2.2 循环得到数组中的每一个敏感词,依次进行替换。for (int i = 0; i < arr.length; i++) {talk = talk.replace(arr[i],"***");}//2.3 把话语中的TMD替换为***System.out.println(talk);}
}
java的学习需要很长时间的磨练。不能急于求成!
5、StringBuilder
1、概念及练习
public class StringBuilderDemo1 {public static void main(String[] args) {//1、创建对象StringBuilder sb = new StringBuilder("123");//2、添加元素//sb.append(1);//sb.append(1.2);//sb.append(true);//反转sb.reverse();//获取长度int l1 = sb.length();System.out.println(l1);//打印操作System.out.println(sb);//3、再把StringBuilder变回字符串String str = sb.toString();System.out.println(sb);}
}
2、链式编程思想
public class StringBuilderDemo1 {public static void main(String[] args) {//1、创建对象StringBuilder sb = new StringBuilder();//2、添加元素sb.append("aaa").append("bbb").append("ccc").append("ddd");//3、再把StringBuilder变回字符串String str = sb.toString();System.out.println(sb);}
}
3、小练习
对称字符串import java.util.Scanner;public class StringBuilderDemo2 {public static void main(String[] args) {//1、键盘录入Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");String str = sc.next();//翻转键盘录入的内容//StringBuilder sb = new StringBuilder();//sb.append(str);//sb.reverse();//System.out.println(sb);//第二种方法 链式编程思想String result = new StringBuilder().append(str).reverse().toString();System.out.println(result);//比较if (str.equals(result)){ //拿str和result进行比较System.out.println("当前字符串是对称的!");}else {System.out.println("当前字符串是不对称的!");}}
}
拼接字符串public class StringBuilderDemo3 {public static void main(String[] args) {//1、定义数组int[] arr = {1, 2, 3};//2、调用方法把数组变成字符串String STR = arrToString(arr);System.out.println(STR);}public static String arrToString(int[] arr) {StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {sb.append(arr[i]);} else {sb.append(arr[i]).append(", ");}}sb.append("]");return sb.toString();}
}
6、StringJoiner
1、概念
import java.util.StringJoiner;public class StringJoinerDemo1 {public static void main(String[] args) {//1、创建一个对象,并指定中间的间隔符号。StringJoiner sj = new StringJoiner("---");//2、添加元素sj.add("aaa").add("bbb").add("ccc").add("ddd");//3、打印结果System.out.println(sj);//aaa---bbb---ccc---ddd}
}