1. String字符串类
1.1 简介
- String不是基本数据类型,是一种引用类型
- String代表一组不可改变的Unicode字符序列。String类对象的内容一旦被初始化,不能再改变
- String类是final修饰的终结类,不能产生子类
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {}
1.2 创建String
String str="abc";
String str1=new String("abc");
System.out.println(str==str1);
System.out.println(str.equals(str1));
1.3 构造方法
- new String();
- new String(“abc”);
- new String(char类型数组);
- new String(char类型数组,数组下标起始位置,取出数组的长度);
- new String(byte类型数组);
- new String(byte类型数组,数组下标起始位置,取出数组的长度);
String str=new String("abc");
String str1=new String();
System.out.println(str1.length());
String str="adfhkjl";
char[] chars = str.toCharArray();
for (char c : chars) {
System.out.println(c);
}
char[] c={'a','b','c','d','e'};
String str=new String(c);
System.out.println(str);
char[] c={'a','b','c','d','e'};
String str=new String(c,1,3);
System.out.println(str);
byte[] b={65,66,67,68,69};
String str=new String(b);
System.out.println(str);
byte[] b={65,66,67,68,69};
String str=new String(b);
String str1=new String(b,1,4);
System.out.println(str);
System.out.println(str1);
1.4 连接操作符
可以使用“+”作为连接符,任何的数据类型和字符串使用加号连在一起,最后都会变成字符串类型
String str="abc";
str=str+"ccc"+12;
System.out.println(str);
str=12+30+str;
System.out.println(str);
String str=null;
str=str+"abc";
System.out.println(str);
String str="abc";
String str1="def";
String str2="abcdef";
System.out.println(str2==str+str1);
System.out.println(str2.equals(str+str1));
System.out.println(str2=="abc"+"def");
System.out.println(str2.equals("abc"+"def"));
1.5 常用方法
length() | 返回int类型的值,获取字符串长度 |
---|
equals(String) | 判断两个字符串中的字面量值是否相等 |
equalsIgnoreCase(String) | 不区分大小写比较字面量值是否相等 |
indexOf(String) | 查找给定值在字符串中第一次出现的下标位置。如果值不存在,则返回-1 |
indexOf(String,int) | 查找给定值在字符串中给定索引位置开始,第一次出现的下标位置。如果值不存在,则返回-1 |
lastIndexOf(String) | 查找给定值在字符串中最后一次出现的下标位置。如果值不存在,则返回-1 |
lastIndexOf(String,int) | 查找给定值在字符串中给定索引位置开始,最后一次出现的下标位置。如果值不存在,则返回-1 |
toUpperCase() | 将字符串中所有字符都转换为大写 |
toLowerCase() | 将字符串中所有字符都转换为小写 |
charAt(int) | 返回下标引处的char值 |
String str="afasFEHSJKFH";
System.out.println(str.length());
String str="afasFEHSJKFH";
String str1="afasFEHsjKFh";
System.out.println(str.equals(str1));
System.out.println(str.equalsIgnoreCase(str1));
String str="afabcde";
int index = str.indexOf("a");
int index1 = str.indexOf(99);
int index2 = str.indexOf("abc");
int index3 = str.indexOf("x");
int index4 = str.indexOf("a", 1);
System.out.println(index);
System.out.println(index1);
System.out.println(index2);
System.out.println(index3);
System.out.println(index4);
String str="afabcade";
int index = str.lastIndexOf("a");
System.out.println(index);
toUpperCase() | 将字符串中所有字符都转换为大写 |
---|
toLowerCase() | 将字符串中所有字符都转换为小写 |
charAt(int) | 返回下标引处的char值 |
String str="afABCade";
String s = str.toUpperCase();
String s1=str.toLowerCase();
System.out.println(s);
System.out.println(s1);
String str="afABCade";
char c=str.charAt(3);
System.out.println(c);
String str="afABCade";
for(int i=0;i<str.length();i++){
char c=str.charAt(i);
System.out.print(c+"\t");
}
substring(int) | 对字符串进行截取,从指定索引位置开始,一直截取到最后 |
---|
substring(int,int) | 对字符进行截取,从指定开始位置,截取到结束位置(不包含结束位置) |
String str="abcdEFGbcdf";
String s=str.substring(3);
System.out.println(s);
String s1=str.substring(3,6);
System.out.println(s1);
trim() | 将字符串前后空格去除(只能去除前后的空格,中间的空格无法去除) |
---|
concat(String) | 字符串连接 和+实现相同的功能,如果字符串是null值不能使用,并且只能传字符串参数,其他类型不可以使用 |
String str=" abcdEFGbcdf ";
String str1="123";
System.out.println(str.trim()+str1);
System.out.println(str.trim().concat(str1));
String str="abc";
String str1=null;
System.out.println(str.concat(str1));
System.out.println(str1.concat(str));
Integer x=123;
System.out.println(str+x);
System.out.println(str.concat(x));
getBytes() | 将字符串转换成byte数组 |
---|
toCharArray() | 将字符串转换成char数组 |
String str="abc";
byte[] bytes = str.getBytes();
for (byte b : bytes) {
System.out.println(b);
}
char[] chars = str.toCharArray();
System.out.println(chars);
contains(String) | 判断在字符串是否包含给定值,返回boolean类型值 |
---|
startsWith(String) | 判断字符串是否以给定值作为开始 |
startsWith(String,int) | 判断字符串从索引位置,是否以给定值作为开始 |
endsWith(String) | 判断字符串是否以给定值作为结束 |
String str="abcdef";
boolean ab = str.startsWith("ab");
System.out.println("ab = " + ab);
boolean ax = str.startsWith("ax");
System.out.println("ax = " + ax);
boolean ab1 = str.startsWith("ab", 1);
System.out.println("ab1 = " + ab1);
boolean ab2 = str.startsWith("ab", 0);
System.out.println("ab2 = " + ab2);
boolean ef = str.endsWith("ef");
System.out.println("ef = " + ef);
boolean e = str.endsWith("e");
System.out.println("e = " + e);
replace(char,char) | 对字符串制定字符,使用新的字符进行替换 |
---|
String str="abcdabef";
String s = str.replace("c", "e");
System.out.println("s = " + s);
String s1 = str.replace("ab", "xx");
System.out.println("s1 = " + s1);
System.out.println("s1 = " + s1);
1.6 案列
1.6.1 检验邮箱地址是否正确
要求:从键盘接收一个email地址,对email地址判断是否是正确的邮箱地址,要求:
1.要求必须有@ 2.只能有一个@ 3.必须有点 . 4.点不能挨着@ 5.点不能是最后一位
思路:
有且只有一个@:找出@的第一个出现的位置和最后出现的位置,比较两者是否相等。
点不能挨着@:点的位置 > @的位置+1
点不能是最后一位:点的位置 < 字符串的长度-1
public class checkEmail {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while (true){
System.out.println("请输入email地址:");
String email=scanner.next();
boolean b=check(email);
if(b){
System.out.println("有效的email地址");
break;
}else {
System.out.println("无效的email地址");
}
}
}
public static boolean check(String string){
int a = string.indexOf("@");
int b = string.lastIndexOf("@");
int c = string.indexOf(".");
return a!=-1 && a==b && c>a+1 && c<string.length()-1;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
1.6.2 比较验证码
生成从a~z A~Z 0~9之间,获取4个值作为一个验证码,从键盘接收一个验证码,做不区分大小写比较。
public class CheckCode {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入验证码的长度:");
int length=scanner.nextInt();
String code=getCode(length);
System.out.println(code);
System.out.println("请输入验证码:");
String code1=scanner.next();
System.out.println(code.equalsIgnoreCase(code1)?"验证码正确":"验证码错误");
}
public static String getCode(int length){
String z="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
String code="";
for(int i=1;i<=length;i++){
int x=(int)(Math.random()*z.length());
code=code+z.charAt(x);
}
return code;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27