思维导图
关于String的面试问题
(一)
String s2 = new String(“abc”);
实际上创建了两个对象,”abc“是创建在常量池中的变量
new String() 是构造器在堆内存中创造的变量
所以实际上创造了两个对象
String s1 = “abc”;
实际上在这段代码的顺序中,它并没有创造变量
而是直接指向的s2在常量池中创造的变量abc
故而s1 == s2 是错误的
(二)
String类常用的API
运用实例
package StringAPI;
public class StringApiDemo {
public static void main(String[] args) {
String name = "我思故我在Ithink";
//public int length() 获取字符串的长度
int a = name.length(); // 拿int类型接收一下方法
System.out.println(a); // 11
//public char charArt(int index) 获取某个索引位置处的字符
char c = name.charAt(1);
System.out.println(c);
System.out.println("-------引申部分:调用该方法对字符串进行遍历-------");
for (int i = 0; i < name.length(); i++) {
char c1 = name.charAt(i);
System.out.println(c1);
}
//public char[] toCharArray() 把字符串转换成字符数组
char[] chars = name.toCharArray();
System.out.println(chars); // 另外一种遍历字符串的方式
//public string substring(int beginIndex,int endIndex) 截取内容 包前不包后
String s2 = name.substring(0,5);
System.out.println(s2);
//public String substring(int beginIndex) 从当前索引一直截取到末尾
String s3 = name.substring(5);
System.out.println(s3);
//public String replace(CharSequence target,CharSequence replacement) //替换掉某处的字符
String s4 = name.replace("我思故我在","你思故你在");
System.out.println(s4);
//public boolean contains(CharSequence s) //判断字符串中是否含有关键字
System.out.println(name.contains("我思")); // true
//public boolean starsWiths(String prefix) //判断字符串以什么开始
System.out.println(name.startsWith("我思故我在")); //true
System.out.println(name.startsWith("思故我在")); //false
//public String[] split(String s) //按照某个内容把字符串分割成字符串数组返回
String name4 = "女单,男单,混双";
String[] ch = name4.split(",");
for (int i = 0; i < ch.length; i++) {
System.out.println("选择了:" + ch[i]);
}
}
}
不同的API方法的调用可以在代码编写的时候更加的方便简单
带入具体项目的运营
(一)随机生成一个五位的验证码plus版
package StringAPI;
import java.util.Random;
public class StringYanZhengMa {
public static void main(String[] args) {
//定义可能出现的字符串的信息
String datas = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
//循环五次每次生成一个随机的索引,提取对应的字符连接起来
String code = "";
Random r = new Random();
for (int i = 0; i < 5; i++) {
int Index = r.nextInt(datas.length()); // 在datas范围内随机一个数字出来作为索引的数字
char c = datas.charAt(Index);
code += c;
}
//输出字符串变量
System.out.println(code);
}
}
(二) 用户登录程序
package StringAPI;
import java.util.Scanner;
public class StringLogin {
public static void main(String[] args) {
//设置好正确的登录名称以及密码
String okname = "YangLetong";
String okpassword = "YLT1019";
//给予三次登录机会
//设置for循环在循环年内进行查验
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("请输入您的用户名称:");
String name = sc.next();
System.out.println("请输入您的密码");
String password = sc.next();
//分别判断输入用户名以及密码是否一致
if(okname.equals(name)){
if(okpassword.equals(password)){
System.out.println("登录成功!");
break;
}
else{
System.out.println("密码输入错误!");
System.out.println("您还剩余" + (2-i) + "次机会");
}
}else{
System.out.println("用户名输入错误!");
System.out.println("您还剩余" + (2-i) + "次机会");
}
}
}
}
(三)手机号加密
package StringAPI;
import java.util.Scanner;
public class StringPhoneShield {
public static void main(String[] args) {
//键盘录入一个手机号码
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的手机号:");
String tel = sc.next();
//截取手机号的前三位后四位
String before = tel.substring(0,3);
String after = tel.substring(7);
String tel1 = before + "****" + after;
System.out.println("机密后的手机号为:");
System.out.println(tel1);
}
}
运行成果
以上则是对String类的一个较完整的总结
String类在后期的项目开发中非常的常见并且它附带的API非常的丰富
提供了很多的便利
是在Java学习中应该很好掌握的知识点



