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; }
}
