【实例描述】
在登录一些网站时,我们需要输入用户名和密码。也许时间久了你就会忘记所设的密码,这时我们可以请求该网站将密码发到注册时的邮箱。这就需要判断用户输入的用户名是否正确,我们可以通过对比用户输入的用户名字符串是否与数据库中或者已经存在的集合中的字符串相同,来决定用户输入的用户名是否正确。实例的运行效果如图4.1 所示。
【实现过程】
在Eclipse 中新建项目Username,并在其中创建一个Username.java
文件。在该类的主方法中创建标准输入流的扫描器对象,接收用户输入变量值。然后判断输入值,如果不是管理员用户名并且输入的用户名是已经注册的则显示正确提示,否则显示错误提示。核心代码如下所示:
protected
void do_button_actionPerformed(ActionEvent e) {
String name =
usernameField.getText(); // 获取用户输入
if (name.equals("admin")) { //
判断是否管理员账号
showMessageDialog(null, "对不起,这个用户名是管理员的,不是你的");
} else if
(name.equals("Lester")) { // 判断是否注册用户
showMessageDialog(null,
"该用户名对应的密码已经发送到注册时的邮箱,请查收
");
} else { //
给错误用户名的提示对话
框
showMessageDialog(null, "你输入的用户名不存在,留意Caps Lock
键是否按下。
");
}
}
【代码解析】
本实例采用了String
类的equals()方法来判断两个字符串的内容是否相同,这个方法是从Object 类中继承的。在Java 语言中,默认的所有类都是Object
的子类,也就是说只要是对象,都会重写或直接使用Object 类的equals()方法,String
类就重写了这个方法实现判断字符串内容是否相同的目的。其声明语法如下:
public boolean equals(Object
anObject);
【知识扩展】
在Java 虚拟机中有一个保存字符串的池,它会记录所有的字符串。例如:
String str1=”abc”;
String
str2=”abc”;
String str3=new
String(”abc”);
System.out.println(str1==str2);
System.out.println(str1==str3);
这段代码中str1==str2
的判断将返回true,而str1==str3 将返回false。因为Java
中基本数据类型使用“==”可以判断操作数是否相等,对于对象使用这个符号判断的是两个对象的内存地址是否相同。如果字符串已经存在,就不在创建相同的字符串,直接返回该字符串,所以这两个变量引用的是同一个字符串,那么它们的地址也是相同的,所以str1==str2
成立,但是使
用new 关键字创建的字符串会开辟内存控件,所以str1==str3 不成立。