6月3日笔记
- 面向过程和面向对象的差异
面向对象围绕现实事物展开,定义事物自身属性;面向过程侧重程序编写,按执行步骤编码。
类
是抽象模板,定义一类事物共有:属性(特征)+方法(行为)
对象根据类实例化出来实实在在的个体
- 类和对象的关联
类包含成员变量、成员方法两部分:
成员变量:用来定义事物特征
修饰符 class 类名{
修饰符 数据类型 变量名;
}
成员方法:用来定义事物行为
修饰符 class 类名{
修饰符 返回值类型 方法名(参数列表){
}
}
代码练习
public class Main {
public static void main(String[] args) {
Student stu = new Student();
stu.name = "常志遥";
stu.id = 723410605;
stu.age = 22;
stu.study();
stu.exam();
stu.displayInfo();
}
}
class Student {
String name;
int id;
int age;
public void study() {
System.out.println(name + " 正在学习");
}
public void exam() {
System.out.println(name + " 正在考试");
}
public void displayInfo() {
System.out.println("姓名: " + name + ", 学号: " + id + ", 年龄: " + age);
}
}
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
static ArrayList<User> userList = new ArrayList<>();
static ArrayList<News> newsList = new ArrayList<>();
static User currentUser = null;
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
while (true) {
System.out.println("\n====== 微头条主菜单 ======");
System.out.println("1. 注册");
System.out.println("2. 登录");
System.out.println("3. 查看新闻列表");
System.out.println("4. 发布新闻");
System.out.println("5. 退出");
System.out.print("请选择:");
int choice = scanner.nextInt();
scanner.nextLine();
switch (choice) {
case 1:
register();
break;
case 2:
login();
break;
case 3:
showNewsList();
break;
case 4:
publishNews();
case 5:
System.out.println("再见!");
scanner.close();
return;
default:
System.out.println("无效选择!");
}
}
}
static void register() {
System.out.print("用户名:");
String name = scanner.nextLine();
for (User u : userList) {
if (u.getUsername().equals(name)) {
System.out.println("用户名已存在!");
return;
}
}
//对比后发现不存在就可以设置密码了
System.out.print("密码:");
String pwd = scanner.nextLine();
// 创建User对象并添加到userList集合中
userList.add(new User(name, pwd));//创建了一个新的User对象,需要看User定义
System.out.println("注册成功!");
}
// 登录方法
static void login() {
System.out.print("用户名:");
String name = scanner.nextLine();
System.out.print("密码:");
String pwd = scanner.nextLine();
// 遍历userList,查找匹配的用户名和密码
for (User u : userList) {
if (u.getUsername().equals(name) && u.getPassword().equals(pwd)) {
currentUser = u; // 记录当前登录的用户对象,为什么?
System.out.println("登录成功!");
return; // 登录成功,结束方法
}
}
// 未找到匹配的用户
System.out.println("用户名或密码错误!");
}
// 发布新闻方法
static void publishNews() {
// 检查是否已登录
if (currentUser == null) {
System.out.println("请先登录!");
return;
}
System.out.print("标题:");
String title = scanner.nextLine();
System.out.print("内容:");
String content = scanner.nextLine();
// 创建News对象,自动生成发布时间,并添加到newsList集合中
newsList.add(new News(title, content));
System.out.println("发布成功!");
}
// 查看新闻列表方法
static void showNewsList() {
System.out.println("\n====== 新闻列表 ======");
// 遍历newsList,按顺序显示每条新闻的标题和发布时间
for (int i = 0; i < newsList.size(); i++) {
News n = newsList.get(i);
// 编号从1开始,所以用(i+1)
System.out.println((i+1) + ". " + n.getTitle() + " (" + n.getPublishTime() + ")");
}
}
}
import java.text.SimpleDateFormat;
import java.util.Date;
public class News {
private String title;
private String content;
private String publishTime;
public News(String title, String content) {
this.title = title;
this.content = content;
this.publishTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
}
public String getTitle() {
return title;
}
public String getPublishTime() {
return publishTime;
}
}
public class User {
private String username;
private String password;
public User() {}
public User(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
}
浙公网安备 33010602011771号