zoukankan      html  css  js  c++  java
  • 判断用户名是否正确

       在程序的开发过程中,经常需要判断用户输入的用户名是否正确,可以通过对比用户输入的用户名字符串是否与数据库中或者已经存在集合中的字符串相同,来决定用户输入的用户名是否正确。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("u5BC6u7801u627Eu56DE");
            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("u7528u6237u540DuFF1A");
            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("u63D0u4EA4");
            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("u5173u95ED");
            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(
                    "<html>u8BF7u8F93u5165u4F60u8981<font size=5 color=red>u627Eu56DEu5BC6u7801</font>u7684u7528u6237u540Du79F0u3002</html>");
            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不成立。

  • 相关阅读:
    js数组的用法以及数组根据下标(数值或字符)移除元素
    组件创建、组件注册方式
    vue.runtime.esm.js:593 [Vue warn]: Invalid prop: custom validator check failed for prop "value".报错解决
    uni-app 子组件如何调用父组件的方法
    wap2app(十)--wap2app 添加原生底部导航,添加原生标题栏,填坑
    wap2app(九)-- 使用mui.previewImage之后,页面a链接不能跳转
    wap2app(八)-- iphoneX 底部导航的兼容问题
    wap2app(七)-- 长按保存图片
    我的新书《Android App开发从入门到精通》终于出版啦
    Android微信登录、分享、支付
  • 原文地址:https://www.cnblogs.com/mrxy/p/6552966.html
Copyright © 2011-2022 走看看