Java入门学习笔记2:从零实现简单用户注册系统
在刚学习 Java 的时候,很多人会觉得 “类” “对象” “集合” 这些概念有点抽象。与其死记概念,不如动手做一个小项目。
这篇笔记,我们一步一步实现一个最简单的注册系统,功能很纯粹:
-
输入用户名
-
输入密码
-
保存用户
并在过程中理解几个核心知识点:类、对象、输入、集合、循环、判断逻辑。
目录
1️⃣ 导入 ArrayList 集合(必须先导入才能使用)
一、定义用户:创建 User 类
首先,我们要明确 “用户” 是什么样的——一个用户有用户名和密码两个核心信息,所以我们先创建一个专门的User类,用来定义用户的结构。
新建文件:User.java
public class User {
String username;
String password;
}
❓为什么不把这段代码写在 Main.java里?
原因很简单:
-
分开写,文件不会越变越大,结构更清晰
-
后续维护更方便(比如修改用户属性,只需要改User.java)
-
符合“单一职责”:User.java 定义 “用户长什么样”,Main.java 负责“程序怎么运行”(怎么使用用户)
二、创建并使用对象
在 Main.java 中,创建用户对象,给对象赋值,看看如何操作用户信息:
public class Main {
public static void main(String[] args) {
// 创建一个User类的对象,用变量u引用它(相当于“创建一个用户”)
User u = new User();
// 给这个用户的用户名和密码赋值
u.username = "admin";
u.password = "123456";
// 打印用户信息
System.out.println(u.username); // 输出:admin
System.out.println(u.password); // 输出:123456
}
}
⚠️ 注意一个小细节:
如果直接打印对象 System.out.println(u); ,输出的会是类似 com.yyr.demo.User@4eec7777 的内容。
这是因为Java中,打印对象本质上会调用对象的 toString() 方法,而我们没有重写这个方法时,它会默认输出“类名@对象的内存地址”,并不是我们想要的用户信息。
三、接入用户输入
上面的代码中,用户名和密码是我们写死在代码里的,实际注册系统需要用户手动输入,这时候就需要用到 Scanner 类(用于接收控制台输入)。
修改 Main.java,加入输入功能,代码如下:
import java.util.Scanner; // 导入Scanner类,用于接收输入
public class Main {
public static void main(String[] args) {
// 创建Scanner对象,用于接收用户输入(相当于“打开输入工具”)
Scanner input = new Scanner(System.in);
// 提示用户输入用户名
System.out.println("请输入用户名:");
String username = input.nextLine(); // 接收用户输入的用户名
// 提示用户输入密码
System.out.println("请输入密码:");
String password = input.nextLine(); // 接收用户输入的密码
// 创建用户对象,将输入的信息赋值给对象
User u = new User();
u.username = username;
u.password = password;
// 提示注册成功
System.out.println("注册成功:" + u.username);//这里的u.username和前面的username不一样
}
}
💡 小提醒:
这里的 u.username
和前面的 username不一样 —— username只是一个临时变量,而 u.username是存在用户对象里的属性,数据已经被“存”到用户对象中了。
四、支持多个用户(ArrayList)
上面的代码只能注册一个用户,关闭程序后数据就没了,我们需要一个 “容器” 来保存多个用户,这里就用到 Java 中的 ArrayList (动态数组,专门用来存多个同类型的数据)。
1️⃣ 导入 ArrayList 集合(必须先导入才能使用)
在Main.java的最顶部,加入导入语句:
import java.util.ArrayList;// 导入ArrayList类
2️⃣ 创建“用户列表”(容器)
在main方法中,创建一个专门用来存User对象的列表,代码如下:
ArrayList<User> users = new ArrayList<>();//users(复数,代表多个用户)
简单理解: ArraryList<User> 就相当于一个 “用户档案袋”,里面只能放User类型的对象(也就是用户)。
3️⃣ 将注册的用户加入列表
在创建用户对象、赋值完成后,用 add() 方法将用户加入列表,代码如下(插入到注册成功提示前):
users.add(u);
4️⃣ 测试效果(查看用户数量)
我们可以打印当前用户列表的长度,确认用户是否保存成功,加入如下代码:
System.out.println("当前用户数量:" + users.size());// size()方法获取列表中元素的个数
这里梳理一下三个关键变量的区别,避免混淆:
|
变量名 |
类型 |
代表什么 |
|---|---|---|
|
users |
ArrayList<User> |
用户列表(存放所有注册的用户) |
|
u |
User |
单个用户对象(一次注册的一个用户) |
|
username |
String |
临时字符串(接收用户输入的用户名) |
五、让程序可以“无限注册”
现在我们的系统只能注册一次,不够实用,我们给它加一个“死循环”,让用户可以多次注册。使用死循环:
while (true) {
// 注册逻辑
}
👉 程序会一直运行,这是正常的
六、升级:做一个菜单系统
目标效果:
1 注册
2 查看用户
3 退出
请选择:
🧠 核心思路
每次循环都打印菜单 → 让用户选择功能 → 根据选择执行对应操作(注册/查看/退出)
🧱 菜单框架
用 while(true) 创建死循环,循环内部打印菜单,接收用户选择,代码如下:
while (true) {
System.out.println("1 注册");
System.out.println("2 查看用户");
System.out.println("3 退出");
System.out.println("请选择:");
String choice = input.nextLine();
}
🧱 条件判断
根据用户选择的 choice ,用 if-else if 判断,执行注册、查看、退出功能,代码如下(插入到接收choice之后):
if (choice.equals("1")) {
// 注册
} else if (choice.equals("2")) {
// 查看用户
} else if (choice.equals("3")) {
break;
} else {
System.out.println("输入错误");
}
⚠️ 关键注意点:
不能写 if(choice == 1) !因为 choice 是String类型(用户输入的是字符串),而1是int类型,类型不同无法比较;==
比较的是对象地址,equals() 才是比较字符串内容。
七、实现功能
1. 注册功能
将注册代码放入 choice.equals("1") 的判断中
System.out.println("请输入用户名:");
String username = input.nextLine();
System.out.println("请输入密码:");
String password = input.nextLine();
User newUser = new User();
newUser.username = username;
newUser.password = password;
users.add(newUser);
System.out.println("注册成功:" + newUser.username);
2. 查看用户
将查看用户的代码,放入 choice.equals("2") 的判断中,同时处理 “暂无用户” 的情况,代码如下:
if (users.size() == 0) {
System.out.println("暂无用户");
} else {
for (int i = 0; i < users.size(); i++) {
User tempUser = users.get(i);
System.out.println("用户名:" + tempUser.username + ",密码:" + tempUser.password);
}
}
3. 退出系统
System.out.println("退出成功");
break;
八、优化:避免用户名重复(关键)
真实系统中,用户名不能重复,所以注册前要先检查列表中是否已有该用户名。
boolean exists = false;
for (int i = 0; i < users.size(); i++) {
if (users.get(i).username.equals(username)) {
exists = true;
break;
}
}
if (exists) {
System.out.println("用户名已存在,请重新输入!");
} else {
users.add(newUser);
System.out.println("注册成功:" + newUser.username);
}
🧠 “遍历列表找东西” 通用模板
boolean found = false; // 标记是否找到
for (int i = 0; i < 列表.size(); i++) {
if (查找条件) {
found = true;
break;
}
}
if (found) {
// 找到的逻辑
} else {
// 没找到的逻辑
}
九、完整代码
整合所有功能,最终的完整代码如下,复制到对应的文件中,即可直接运行:
1. User.java
public class User {
String username;
String password;
}
2. Main.java
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 初始化输入工具和用户列表
Scanner input = new Scanner(System.in);
ArrayList<User> users = new ArrayList<>();
// 系统主循环(菜单展示+功能选择)
while (true) {
System.out.println("1 注册");
System.out.println("2 查看用户");
System.out.println("3 退出");
System.out.println("请选择:");
String choice = input.nextLine();
// 1. 注册功能
if (choice.equals("1")) {
System.out.println("请输入用户名:");
String username = input.nextLine();
System.out.println("请输入密码:");
String password = input.nextLine();
// 用户名去重判断
boolean exists = false;
for (int i = 0; i < users.size(); i++) {
if (users.get(i).username.equals(username)) {
exists = true;
break;
}
}
if (exists) {
System.out.println("用户名已存在,请重新输入!");
} else {
User newUser = new User();
newUser.username = username;
newUser.password = password;
users.add(newUser);
System.out.println("注册成功:" + newUser.username);
System.out.println("当前用户数量:" + users.size());
}
// 2. 查看用户功能
} else if (choice.equals("2")) {
if (users.size() == 0) {
System.out.println("暂无用户");
} else {
for (int i = 0; i < users.size(); i++) {
User tempUser = users.get(i);
System.out.println("用户名:" + tempUser.username + ",密码:" + tempUser.password);
}
}
// 3. 退出功能
} else if (choice.equals("3")) {
System.out.println("成功退出!");
break;
// 输入错误处理
} else {
System.out.println("输入错误,请重新输入!");
}
}
}
}
🎯 总结
通过这个简单的注册系统,我们掌握了Java的核心基础知识点:
-
类与对象:User类定义结构,new User()创建对象,给对象属性赋值
-
集合使用:ArrayList存储多个用户对象,add()添加元素,size()获取长度,get()获取元素
-
循环与条件:while循环实现菜单常驻,for循环遍历列表,if-else if判断功能选择
-
输入输出:Scanner接收用户输入,System.out.println()打印信息
🚀 下一步可以做什么?
如果你想继续升级,可以尝试:
-
🔐 登录功能(校验用户名密码)
-
🗑 删除用户
-
✏ 修改密码
-
💾 文件存储(让数据不丢失)
-
🧱 使用封装(private + getter/setter)
如果你是刚入门,这一篇建议你照着敲一遍代码,效果会完全不一样 👍

所有评论(0)