基本数据类型 与 引用数据类型 原理及其应用


title: 基本数据类型 与 引用数据类型 原理及其应用

#数据类型原理
(以 bit (字符)为单位即1/0,通常有 byte(字节) 单位,1byte=8bite)
##基本数据类型:可以表达的数据范围 都是固定的
###带符号(有正负之分)
####整数型:byte short int long (bit 数:8 16 32 64)
####浮点型:float double (bit 数:32 64)
###不带符号
####字符型:char (bit 数:16)
####布尔型:boolean 1/0(true/false)
##引用数据类型:类 接口
###所用的类,都是类型(如String/JFrame)

对比

基本数据类型声明的变量存储的都是数据

如:int n=10;n 存储对事 10 这个 十进制数的 32 位二进制编码,
如果要改变 n 的值要对这个 32bit 的二进制码做重新排列
###引用数据类型变量声明会确定一个固体空间,存储地址编码(整数)
当数据存储内存时,会占用一块内存空间,这块空间地址编码,存入变量名中。

数据类型应用(以实现登陆注册为例)

首先创建一个 UseUI类,创建一个方法和一个程序入口

public class UserUI {
    public void intUser(){
        
    }
    public static void main(String[] args) {
        UserUI userUI=new UserUI();
        userUI.intUser();
    }

接着来写方法,先创建一个窗体

JFrame jf=new JFrame();
jf.setSize(500,600);
jf.setTitle("登陆注册——作者:hyx");
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//设置布局
jf.setLayout(new FlowLayout());
//设置组建
JLabel namelab=new JLabel("账号");
JLabel pswlab=new JLabel("密码");
JTextField namein=new JTextField();
JTextField pswin=new JTextField();
Dimension dim=new Dimension(450,30);
namein.setPreferredSize(dim);
pswin.setPreferredSize(dim);
JButton Lognin=new JButton("登陆");
JButton Register=new JButton("注册")
//将组件添加到界面上
jf.add(namelab);
jf.add(namein);
jf.add(pswlab);
jf.add(pswin);
jf.add(Lognin);
jf.add(Register);
jf.setVisible(true);

接下来为按钮创建监听器,给监听器附上需要的对象,这时该对象就有了属于自己的一份属性,

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class UIListener implements ActionListener {
    TextField nameIN;
    TextField pswIN;
    @Override
    public void actionPerformed(ActionEvent e) {
        String actionStr= e.getActionCommand();
        System.out.println("点击了"+actionStr);
        String nameStr=nameIN.getText();
        String pswStr= pswIN.getText();
        
    }
}

然后在 UserInt 方法中把监听器给两个按钮接上,
并把这边的输入框获取到的对象地址复制传给 UserListener 中的变量名

UIListener UIL=new UIListener();
Lognin.addActionListener(UIL);
Register.addActionListener(UIL);
UIListener.nameIN=namein;
UIListener.pswIN=pswin;

这时可以运行一下,看是否有误。
运行点击后有“xx 被点击”输出,则完成了按钮监听
接下来,开始分注册,和登陆实现功能
首先这里我们需要一个数据结构 ArrayList 用于储存对象;
ArrayList
即数组表,是基于数组的,是一个动态的允许增加,取出,减少的数组
常用方法:add get remove
size()(用于查看已经存了几个对象)
格式:ArrayList<> xxx=new ArrayList()


在这里建一个 User 类用于创建的对象的存放,将 User 类写在<>内便于取放

public class User {
    String name;
    String pwd;
    public User(String name,String psw){
        this.name=name;
        this.pwd=psw;

    }
}

然后来写注册的存入运行代码,

if(actionStr.equals("注册")){
    User user=new User(nameStr,pswStr);
//这里面是将数据打包为一个对象,再存储在 list 中
    useList.add(user);
    JOptionPane.showMessageDialog(null,"恭喜注册为本平台第"+useList.size()+"位用户!!");
}

接着来写登陆时遍历已存入对象的代码,

if (actionStr.equals("登陆")){
    for (int i = 0; i <useList.size() ; i++) {
//遍历所有已经存在的用户对象,比较用户名是否有跟输入框输入的一致
        User gesture=useList.get(i);
        if (gesture.name.equals(nameStr)){
            if (gesture.pwd.equals(pswStr)){
                JOptionPane.showMessageDialog(null,"登陆成功!!");
                return;
            }
        }
    }
}

最后再完善一下,考虑到可能有重复注册或者密码或账号重复的情况,可以在监听到点击“注册”后,
通过遍历的方法,在存入对象之前进行对比并弹出提醒。

for (int i = 0; i <useList.size() ; i++) {
//遍历对照用户是否存在和提醒
    User gesture1=useList.get(i);
    if (gesture1.name.equals(nameStr)){
        JOptionPane.showMessageDialog(null,"账号已存在,请修改");
        return;
    }
    if (gesture1.pwd.equals(pswStr)){
        JOptionPane.showMessageDialog(null,"密码已存在,请修改");
        return;
    }
    
}

然后又考虑到可能存在没有注册的用户点击登陆后没有反应,
可以在 for语句后加上提醒弹窗,
JOptionPane.showMessageDialog(null,"该用户不存在"); return;
又考虑到存在账号正确密码错误的情况,可以在账号equals 的语句后添加
JOptionPane.showMessageDialog(null,"密码输入错误!!"); return;
到此整个“登陆”运行语句的程序为

if (actionStr.equals("登陆")){
    for (int i = 0; i <useList.size() ; i++) {
//遍历对照用户
        User gesture=useList.get(i);
        if (gesture.name.equals(nameStr)){
            if (gesture.pwd.equals(pswStr)){
                JOptionPane.showMessageDialog(null,"登陆成功!!");
                return;
            }
//考虑到密码错误问题
            JOptionPane.showMessageDialog(null,"密码输入错误!!");
            return;
        }


    }
//考虑到账号错误或未注册
        JOptionPane.showMessageDialog(null,"该用户不存在");
        return;

}

运行测试

1.输入账号:hyx
密码:123
点击“登陆”,由于之前为注册故应显示“用户不存在”
在这里插入图片描述

接着点击“注册”,应该显示“注册成功”
在这里插入图片描述

如再次点击“注册”,因为已经注册,应该显示“账户已存在”
在这里插入图片描述

如改账号为 hy,再点击“注册”,则应显示“密码已存在”
在这里插入图片描述

这时再改账号为 hyx,密码为 1234,则应显示“密码错误”
在这里插入图片描述
到此全部验证正确。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值