博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断用户名是否正确
阅读量:6189 次
发布时间:2019-06-21

本文共 4170 字,大约阅读时间需要 13 分钟。

   在程序的开发过程中,经常需要判断用户输入的用户名是否正确,可以通过对比用户输入的用户名字符串是否与数据库中或者已经存在集合中的字符串相同,来决定用户输入的用户名是否正确。Java的基本数据类型可以使用“==”判断两个操作数是否相等,但是对于Java类创建的对象就不能使用这种方法来判断是否相等了。字符串是基本数据类型之外的,也就是说字符串在Java中是对象。本实例将通过字符串相等判断来实现用户名验证。实例运行效果如图

   本实例调用了String类的equals()方法来判断两个字符串内容是否相同,这个方法是从Object类中继承的。在Java语言中,默认所有类都是Object类的子类,也就是说只要是对象,都会重写或直接使用Object类的equals()方法,String类就重写了这个方法实现判断字符串内容是否相同。该方法的声明如下:

 

 

public boolean equals(Object anObject)

参数说明

anObject:与当前字符串进行比较的对象。

1)在项目中创建窗体类,在窗体中添加一个接收用户输入信息的文本框、“提交”和“关闭”两个按钮。

2)编写“提交”按钮的事件处理方法。在该方法中接收用户输入的用户名,然后判断输入,如果不是管理员用户名,并且输入的用户名是已经注册的,则显示正确提示,否则显示错误提示。代码如下:

 

import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JTextField;import javax.swing.JButton;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;public class CheckUsername extends JFrame {        private JPanel contentPane;    private JTextField usernameField;        /**     * Launch the application.     */    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() {            public void run() {                try {                    CheckUsername frame = new CheckUsername();                    frame.setVisible(true);                } catch (Exception e) {                    e.printStackTrace();                }            }        });    }        /**     * Create the frame.     */    public CheckUsername() {        setTitle("\u5BC6\u7801\u627E\u56DE");        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        setBounds(100, 100, 312, 181);        contentPane = new JPanel();        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));        setContentPane(contentPane);        contentPane.setLayout(null);                JLabel label = new JLabel("\u7528\u6237\u540D\uFF1A");        label.setBounds(22, 54, 58, 17);        contentPane.add(label);                usernameField = new JTextField();        usernameField.setBounds(77, 51, 180, 23);        contentPane.add(usernameField);        usernameField.setColumns(10);                JButton button = new JButton("\u63D0\u4EA4");        button.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                do_button_actionPerformed(e);            }        });        button.setBounds(67, 88, 71, 25);        contentPane.add(button);                JButton button_1 = new JButton("\u5173\u95ED");        button_1.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                do_button_1_actionPerformed(e);            }        });        button_1.setBounds(165, 88, 71, 25);        contentPane.add(button_1);                JLabel label_1 = new JLabel(                "\u8BF7\u8F93\u5165\u4F60\u8981\u627E\u56DE\u5BC6\u7801\u7684\u7528\u6237\u540D\u79F0\u3002");        label_1.setBounds(12, 14, 343, 25);        contentPane.add(label_1);    }        protected void do_button_actionPerformed(ActionEvent e) {        String name = usernameField.getText();// 获取用户输入        if (name.equals("admin")) {
// 判断是否管理员账号 JOptionPane.showMessageDialog(null, "对不起,这个用户名是管理员的,不是你的"); } else if (name.equals("mingri")) {
// 判断是否注册用户 JOptionPane.showMessageDialog(null, "该用户名对应的密码已经发送到注册时的邮箱,请查收"); } else {
// 给错误用户名的提示对话框 JOptionPane.showMessageDialog(null, "你输入的用户名不存在,留意Caps Lock键是否按下。"); } } protected void do_button_1_actionPerformed(ActionEvent e) { dispose(); }}

 

心法领悟066Java的字符串池。

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,为什么这个等式会成立呢?Java中的基本数据类型使用“==”可以判断操作数是否相等,对于对象使用这个符号判断的是两个对象的内存地址是否相同。而Java虚拟机为了提高字符串应用效率,提供了字符串池来保存字符串常量,str1创建字符串常量“abc”,这时会先检测字符串池中是否包含该字符串,如果不包含,则创建字符串常量保存到字符串池中,然后再返回。str2也赋值为字符串“abc”,这是由于字符串池中已经存在该字符串,所以不再创建,直接返回该字符串,也就是说这两个变量引用同一个字符串,那么它们的内存地址也是相同的,所以str1==str2成立。但是使用new关键字创建的字符串会新开辟内存空间,所以str1==str3不成立。

 

转载于:https://www.cnblogs.com/mrxy/p/6552966.html

你可能感兴趣的文章
sencha touch 2中list控件分组排序
查看>>
myod
查看>>
iOS 多线程的使用
查看>>
dex、apk完整性校验
查看>>
CF633C:Spy Syndrome 2——题解
查看>>
POJ3070:Fibonacci——题解
查看>>
白盒测试实践作业进度报告——Day 3
查看>>
私有继承:派生类指针不能隐示的转换为基类指针
查看>>
Micropython 如何用Turnipbit做一个自动浇水装置
查看>>
Python 成仙之路
查看>>
HashTable Dictionary HashMap
查看>>
【翻译】如何创建Ext JS暗黑主题之一
查看>>
【OpenGL】详解第一个OpenGL程序
查看>>
设置ubuntu Android sdk JDK环境变量
查看>>
android应用程序的混淆打包
查看>>
创建可按比例调整的布局的 Windows 窗体
查看>>
关于web页面中<mata>各种标签的解释
查看>>
生成函数
查看>>
读书笔记--精通CSS高级Web标准解决方案(一)---CSS基础
查看>>
nodeJs express mongodb 建站(mac 版)
查看>>