除了数字和java关键字外,其他的由多个字符组成的一串字符,都可以叫做字符串。在java中,字符串需要用双引号引起来。
使用String对象存储字符串
String s = “Hello World”;
常用方法:
length():返回字符串长度
equals():对比两个字符串是否相等
课堂练习:
实现会员注册,要求
·用户名长度不小于****3
·密码长度不小于****6
·注册时两次输入密码必须相同
Scanner sc = new Scanner(System.in);
System.out.println("欢迎进入注册系统");
while (true){
System.out.print("请输入用户名:");
String name = sc.next();
if(name.length()<3){
System.out.println("用户名不能少于3位");
continue;
}
System.out.print("请输入密码:");
String pwd = sc.next();
if(pwd.length()<6){
System.out.println("密码长度不能小于6位,请重新输入");
continue;
}else {
System.out.print("请再次输入密码:");
String pwd1 = sc.next();
if(pwd.equals(pwd1)){
System.out.println("注册成功!请牢记用户名和密码");
break;
}else {
System.out.println("两次密码输入不一致,请重新注册");
continue;
}
}
}
字符串拼接练习:
某学生的成绩如表所示,定义三个变量,将成绩赋值给这三个变量,输出他的成绩单
mysql | 80 |
---|---|
java | 90 |
html | 85 |
输出结果:
成绩为:mysql:80,java:90,html:85
字符串拼接的两种方法:
1.“+”号拼接
String s1 = "abc";
String s2 = "def";
System.out.println(s1+s2);
2.使用String 类的concat()方法
String s1 = "abc";
String s2 = "def";
String s3 = s1.concat(s2);
System.out.println(s3);
String常用提取方式:
如果不存在,返回-1
方 法 | 说 明 |
---|---|
public int indexOf(char ch) | 返回第一个出现的字符ch的位置 |
public int indexOf(String value) | 返回第一个出现的字符串value的位置 |
public int lastIndexOf(char ch) | 返回最后一个出现的字符ch的位置 |
public int lastIndexOf(String value) | 返回最后出现的字符串value的位置 |
字符串的截取:
方 法 | 说 明 |
---|---|
public String substring(int beginIndex) | 截取从位置索引开始的字符串部分(截取内容包括该下标) |
public String substring(int beginIndex,int endIndex) | 提取下标为beginIndex和endIndex之间的字符串部分(截取部分包含beginIndex,不包含endIndex:包前不包后) |
public String trim() | 返回一个前后不含任何空格的调用字符串的副本 |
课堂练习:
判断.java是否合法(文件的后缀是由.java组成),判断邮箱格式是否合法(至少包含“@”和“.”,并且“@”在“.”之前)
示例代码
Scanner sc = new Scanner(System.in);
System.out.print("请输入java文件名:");
String javaFile = sc.next();
if(javaFile.substring(javaFile.lastIndexOf('.')).equals(".java")){
System.out.println(javaFile+"文件名合法");
}else {
System.out.println(javaFile+"文件名不合法");
}
System.out.print("请输入邮箱:");
String emailName = sc.next();
if(emailName.indexOf("@")!=-1&&emailName.indexOf(".")>emailName.indexOf("@")){
System.out.println("邮箱格式正确");
}else {
System.out.println("邮箱格式不正确");
}
字符串拆分:
split():将字符串按一定规则拆分,返回值为数组。
课堂示例:
有一段歌词,每句都以空格“ ”结尾,请将歌词每句按行输出。
“长亭外 古道边 芳草碧连天 晚风扶 柳笛声残 夕阳山外山”
示例代码:
String words = "长亭外 古道边 芳草碧连天 晚风扶 柳笛声残 夕阳山外山";
System.out.println("**********格式改变前***********");
System.out.println(words);
String[] wordsSplit = words.split(" ");
System.out.println("**********格式改变后***********");
for (String word : wordsSplit){
System.out.println(word);
}
课堂示例:
验证身份证号、手机号、座机号格式是否正确
示例代码:
System.out.println("请输入身份证号码:");
String idCard = sc.next();
System.out.println("请输入手机号码:");
String mobilePhoneNum = sc.next();
System.out.println("请输入座机号码(xxxx-xxxxxxx):");
String phoneNum = sc.next();
String[] phones = phoneNum.split("-");
if(idCard.length()!=18){
System.out.println("身份证号码必须是18位");
}
if(mobilePhoneNum.length()!=11){
System.out.println("手机号码必须是11位");
}
if(phones[0].length()!=4){
System.out.println("座机区号必须为4位");
}
if(phones[1].length()!=7){
System.out.println("座机号码必须为7位");
}
课堂练习:
输入一个字符串,再输入要查找的字符,判断该字符在该字符串中出现的次数
Scanner input = new Scanner(System.in);
System.out.println("请输入一串字符串:");
String words = input.next();
System.out.println("请输入要查找的字符:");
String chr = input.next();
int count = 0;
for(int i = 0;i<words.length();i++){
String word = words.substring(i, i + 1);
if(word.equals(chr)){
count++;
}
}
System.out.println(chr+"共出现"+count+"次");
StringBuffer类:String增强版
·对字符串频繁修改(如字符串连接)时,使用StringBuffer类可以大大提高程序执行效率
·创建StringBuffer对象
StringBuffer sb = new StringBuffer();//创建空StringBuffer对象
StringBuffer sb = new StringBuffer("aaa");//创建一个变量存储字符串aaa
·StringBuffer的使用
sb.toString();//转化为String类
sb.append("*");//追加字符串
sb.insert(1,"*");//在指定下标位置插入字符串
代码阅读:
public class StringBufferDemo {
public static void main(String[ ] args) {
StringBuffer sb = new StringBuffer("青春无悔");
int num=110;
StringBuffer sb1 = sb.append("我心永恒");
System.out.println(sb1);
StringBuffer sb2 = sb1.append('啊');
System.out.println(sb2);
StringBuffer sb3 = sb2.append(num);
sb3.insert(4,"哈哈哈");
System.out.println(sb3);
}
}
课堂练习:
将一个数字字符串转换成逗号分隔的数字串,即从右边开始每三个数字用逗号分隔
请输入一串数字:12345678
12,345,678
参考代码:
Scanner sc = new Scanner(System.in);
System.out.println("请输入一串数字:");
String num = sc.next();
StringBuffer sb = new StringBuffer(num);//将String转化为StringBuffer类
for(int i = sb.length()-3;i>0;i = i-3){
sb.insert(i,",");
}
System.out.println(sb);
总结:
String类常用方法:
获得字符串的长度:length()
比较字符串:equals()
连接字符串:concat()
提取字符串:substring()
搜索字符串:indexOf()
拆分字符串:split()
StringBuffer类常用方法:
转换成String类型:toString()
连接字符串:append()
插入字符串:insert()