目录
String
字符串比较
charAt 取数组中的值
案例
substring
案例:手机号加密
StringBuilder
StringBuilder提高效率原理图
StringJoiner
字符串拼接底层方法
-
String
- 创造方法
- 直接赋值
- 通过new关键字 / 构造方法
-
字符串比较
- ==
- equals :要求比较的字符串完全一样
- equalslgnoreCase :忽略大小写的比较
-
charAt 取数组中的值
-
案例
-
输入金额:15684 => 零佰零拾壹万伍仟陆佰捌拾肆元
package com.day1; import java.util.Scanner; public class Money { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int mo; String money = ""; //输入数字 while (true){ System.out.print("输入金额:"); mo = sc.nextInt(); if (mo >= 0 && mo <=9999999){ break; } else { System.out.println("金额无效"); } } //转换成大写 while (true){ int ge = mo % 10; //个位 String CapitalNumber = getCapitalNumber(ge); money = CapitalNumber + money; mo = (mo - ge)/10; if (mo==0){ break; } } //前面补零 int count = 7 - money.length(); for (int i = 0; i < count; i++){ money = getCapitalNumber(0) + money; } //补齐单位 String[] arr = {"佰","拾","万","仟","佰","拾","元"}; for(int i=0; i<money.length();i++){ char c = money.charAt(i); System.out.print(c); System.out.print(arr[i]); } } public static String getCapitalNumber(int number){ String[] arr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; return arr[number]; } }
- 创造方法
-
substring
- String substring(int begin,int end)
- 包左不包右
- String substring(int end)
- 截取到末尾
-
案例:手机号加密
package com.day1; import java.util.Scanner; public class phone { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("请输入手机号:"); String number = sc.next(); String numberleft = number.substring(0,4); String numberright = number.substring(7); number = numberleft + "****" + numberright; System.out.println(number); } }
- String substring(int begin,int end)
- replace
- 案例:敏感词屏蔽
package com.day1; import java.util.Scanner; public class Noword { public static void main(String[] args) { //敏感词库 String[] arr = {"垃圾","TMD","sb"}; Scanner sc = new Scanner(System.in); String talk = sc.next(); for (int i = 0; i < arr.length; i++){ talk = talk.replace(arr[i],"***"); } System.out.println(talk); } }
- 案例:敏感词屏蔽
-
StringBuilder
- StringBuider可以看成是一个容器,创建只够里面的内容是可变的
- 抬高字符串的操作效率
- 构造方法
- 无参构造
- 有参构造
- 常用方法
- 添加元素
- sb.append(添加内容);
- 添加任意类型内容
- 反转容器的内容
- sb.reverse();
- 返回长度(字符出现个数)
- sb.length()
- 转String类型
- sb.toString();
package com.day1.day2; public class SB { public static void main(String[] args) { StringBuilder sb = new StringBuilder(); //添加元素 sb.append(2.3).append(5).append("你好呀"); System.out.println(sb); //反转元素 sb.reverse(); System.out.println(sb); //获取长度 System.out.println(sb.length()); //转换String String s = sb.toString(); System.out.println(s); } }
- sb.toString();
- 添加元素
- 打印StringBuilder 打印的是属性值 不是地址值
- 案例:回文数(更加简单)
package com.day1.day2; import java.util.Scanner; public class duichen { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("输入数字:"); String s = sc.next(); String ss = new StringBuilder().append(s).reverse().toString(); if(s.equals(ss)){ System.out.println("yes"); }else{ System.out.println("no"); } } }
-
StringBuilder提高效率原理图
- 原理图
- 原理图
- StringBuilder源码分析
默认长度为16(容量16) 长度3- 长度超过16 会扩容 (原来的容量*2 + 2 )
- 长度超过32 以实际的长度为准
- 查看容量和长度的方法
-
StringJoiner
- 提高字符串的操作效率,代码编写简洁
- 构造方法
- StringJoiner sj = new StringJoiner("**");
- StringJoiner sj = new StringJoiner("**","[","]");
- StringJoiner sj = new StringJoiner("**");
- 常用方法
- 添加内容 add
- sj.add("23")
- 返回长度 length
- 返回字符串 toString
- 添加内容 add
-
字符串拼接底层方法
- 静态拼接 String s = "a" + "b" + "c"
- 动态拼接
- 如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果,会复用串池中的字符串。
- 如果有变量参与,每一行拼接的代码,都会在内存中创建新的字符串,浪费内存。
- 静态拼接 String s = "a" + "b" + "c"