字符串内容的比较:
方法名 | 说明 |
---|---|
public bloolean equals(Object anObject) | 将此字符串与指定对象进行比较,只关心字符内容是否一样 |
public bloolean equalsIgnoreCase(String anotherString) | 将此字符串与指定对象进行比较,忽略大小写比较字符串。只关心字符串内容是否一致 |
代码示例:
错误的:用"=="比较字符串的内容
package cn.爱睡觉的瘦子.练习;
import java.util.Scanner;
public class example {
public static void main(String[] args) {
String okname = "爱睡觉的瘦子";
String okpasswd = "123456";
Scanner sc = new Scanner(System.in);
System.out.print("请输入用户名:");
String name = sc.next();
System.out.print("请输入密码:");
String passwd = sc.next();
if(okname == name && okpasswd == passwd){
System.out.println("登录成功!");
}
else {
System.out.println("登录失败!");
}
}
}
输出:
请输入用户名:爱睡觉的瘦子
请输入密码:123456
登录失败!
错误原因:‘==’是用来比较地址是否相同的!而代码中的okname 、 name 和 okpasswd 、 passwd。分别指向不同的对象,地址不同。
正确的:
package cn.爱睡觉的瘦子.练习;
import java.util.Scanner;
public class example {
public static void main(String[] args) {
String okname = "爱睡觉的瘦子";
String okpasswd = "123456";
Scanner sc = new Scanner(System.in);
System.out.print("请输入用户名:");
String name = sc.next();
System.out.print("请输入密码:");
String passwd = sc.next();
if(okname.equals(name) && okpasswd.equals(passwd)){
System.out.println("登录成功!");
}
else {
System.out.println("登录失败!");
}
}
}
输出:
请输入用户名:爱睡觉的瘦子
请输入密码:123456
登录成功!
- public bloolean equalsIgnoreCase(String anotherString)方法经常用来检测验证码是否正确
所以写了一段代码用来随机生成验证码:
package cn.爱睡觉的瘦子.随机验证码;
import java.util.Random;
public class GetString {
/*
不输入参数的话默认获得长度为5的验证码
*/
public String Get(){
String l = Get(5);
return l;
}
public String Get(int length){
String l = "";//定义一个空字符串
Random ran = new Random();//生成随机数
for (int i = 0; i < length; i++) {
int j = ran.nextInt(3);
/*既然是随机生成的验证码那么每一位的种类也要随机
如果j = 0,那就随机生成大写字母
如果j = 1,那就随机生成小写字母
如果j = 2,那就随机生成数字
*/
switch (j){
case 0://利用ASCII强制类型转换
l += (char)(ran.nextInt(25)+65);
break;
case 1:
l += (char)(ran.nextInt(25)+97);
break;
case 2:
l += ran.nextInt(10);
break;
}
}
return l;
}
}
在Test类中进行测试:
package cn.爱睡觉的瘦子.随机验证码;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
GetString g = new GetString();
String okStr = g.Get();
System.out.println("验证码:"+okStr);
Scanner s = new Scanner(System.in);
System.out.print("请输入验证码:");
String Str = s.next();
System.out.println(okStr.equalsIgnoreCase(Str));
}
}
输出:
验证码:BQS7v
请输入验证码:bqs7v
true
字符串长度
- public int length()
代码示例:
package cn.爱睡觉的瘦子.练习;
public class example {
public static void main(String[] args) {
String str = "123456";
System.out.println(str.length());
}
}
输出:
获取某个索引位置处的字符(从零开始)
- public char charAt (int index)
代码示例:
package cn.爱睡觉的瘦子.练习;
public class example {
public static void main(String[] args) {
String str = "123456";
System.out.println(str.charAt(0));
System.out.println(str.charAt(1));
System.out.println(str.charAt(5));
}
}
输出:
将当前字符串转换成字符数组返回
- public char[] toCharArray():
代码示例:
package cn.爱睡觉的瘦子.练习;
public class example {
public static void main(String[] args) {
String str = "我爱java";
char[] a = str.toCharArray();
System.out.print("[");
for (int i = 0; i < str.length(); i++) {
System.out.print(i==str.length()? a[i] : a[i]+",");
}
System.out.println("]");
}
}
输出:
很据开始和结束索引进行截取,得到新的字符串(包前不包后)
- public String substring(int beginIndex, int endIndex):
代码示例:
package cn.爱睡觉的瘦子.练习;
public class example {
public static void main(String[] args) {
String str = "我爱java";
System.out.println(str.substring(0, 2));
System.out.println(str.substring(2, 6));
}
}
输出:
从传入的索引处截取,截取到末尾,得到新的字符串
- public String substring(int beginIndex)
代码示例:
package cn.爱睡觉的瘦子.练习;
public class example {
public static void main(String[] args) {
String str = "我爱java";
System.out.println(str.substring(1));
System.out.println(str.substring(3));
}
}
输出:
根据传入的规则切割字符串,得到字符串数组返回
- public String[] split(String regex)
代码示例:
package cn.爱睡觉的瘦子.练习;
public class example {
public static void main(String[] args) {
String str = "我,爱,java";
String[] str2 = str.split(",");
for (int i = 0; i < str2.length; i++) {
System.out.print(str2[i]);
}
}
}
输出: