news 2026/4/4 7:26:26

Java面向对象编程实战指南1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java面向对象编程实战指南1

一、实验实训目的和要求

1、理解 Object 类的基础地位及 toString ()、equals () 等核心方法的功能,熟练掌握其重写规则;全面掌握包装类的特性、基本数据类型与包装类的转换机制,以及 valueOf ()、parseXxx () 等常用方法的应用。

2、能在自定义类中正确重写 Object 类方法以实现对象的个性化描述与比较;能运用包装类解决数据有效性处理(如无效数值存储)等实际问题,提升面向对象编程中类的封装与代码规范性。

3、掌握 Java API 的查阅方法,理解 Object 类在集合框架等实际场景中的应用;学会基于包装类进行类设计,增强代码对复杂数据的适配性与可扩展性。

4、培养职业素养与学习意识:通过遵循方法重写规则培养契约精神,在数据处理中养成严谨细致的编程习惯;通过自主探索 API 文档,树立自主学习与终身学习意识,适应技术发展需求。

二、实验实训器材(包括仪器、设备、主要试剂或元器件、软件等)

器材:电脑、JDK软件、ideal软件

三、实验实训内容和主要操作步骤

2.1 验证性实验

1、用户类(User)的封装与构造方法实现。调试下面的程序,分析程序的功能和运行结果并添加代码注释。

public class User {​

private String username;​

private String password;​

private String tel;​

​ public User() {}​

​ public User(String username, String password, String tel) {​

this.username = username;​

this.password = password;​

this.tel = tel;​

}​

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

}​

public String getTel() {​

return tel;​

}​

public void setTel(String tel) {​

this.tel = tel;​

}​

}

2、在上述 User 类中覆盖 toString 方法,格式为 “username:xxx,password:xxx,tel:xxx”。调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

@Override​

public String toString() {​

return "username:" + username + ",password:" + password + ",tel:" + tel;​

}

3、在上述 User 类中覆盖 equals 方法,只要用户名相同则判定为相同对象。调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

@Override​

public boolean equals(Object obj) {​

if (this == obj) return true;​

if (obj == null || getClass() != obj.getClass()) return false;​

User user = (User) obj;​

return username.equals(user.username);​

}

4、编写测试类,调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

import java.util.Scanner;​

public class UserTest {​

public static void main(String[] args) {​

Scanner scanner = new Scanner(System.in);​

System.out.println("请输入第一个用户信息:");​

System.out.print("用户名:");​

String username1 = scanner.nextLine();​

System.out.print("密码:");​

String password1 = scanner.nextLine();​

System.out.print("电话:");​

String tel1 = scanner.nextLine();​

User user1 = new User(username1, password1, tel1);​

System.out.println("请输入第二个用户信息:");​

System.out.print("用户名:");​

String username2 = scanner.nextLine();​

System.out.print("密码:");​

String password2 = scanner.nextLine();​

System.out.print("电话:");​

String tel2 = scanner.nextLine();​

}​

}

5、学生类(Student)的封装与包装类应用。调试下面的程序,分析程序的功能和运行结果并添加代码注释。

public class Student {

private String name;

private Integer age;

private Double score;

public Student() {}

public Student(String name, Integer age, Double score) {

this.name = name;

this.age = (age != null && age >= 0) ? age : null;

this.score = (score != null && score >= 0 && score <= 100) ? score : null;

}

public String getName() { return name; }

public Integer getAge() { return age; }

public Double getScore() { return score; }

public void setName(String name) { this.name = name; }

public void setAge(Integer age) {

this.age = (age != null && age >= 0) ? age : null;

}

public void setScore(Double score) {

this.score = (score != null && score >= 0 && score <= 100) ? score : null;

}

}

6、在上述Student 类基础上覆盖 toString 方法,“姓名:xxx,年龄:xxx,成绩:xxx” ,其中无效数据(null )显示为 “未填写”。调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

@Override

public String toString() {

String ageStr = (age != null) ? age.toString() : "未填写";

String scoreStr = (score != null) ? score.toString() : "未填写";

return "姓名:" + name + ",年龄:" + ageStr + ",成绩:" + scoreStr;

}

7、在 Student 类 set 方法基础上,新增 isAgeValid、isScoreValid 方法。调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

public boolean isAgeValid() {

return age != null && age >= 0;

}

public boolean isScoreValid() {

return score != null && score >= 0 && score <= 100;

}

8、编写测试类,调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

public class StudentTest {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.println("请输入学生信息:");

System.out.print("姓名:");

String name = scanner.nextLine();

System.out.print("年龄:");

Integer age = null;

try {

age = Integer.valueOf(scanner.nextLine());

} catch (NumberFormatException e) {

// 输入非数字,age保持null

}

System.out.print("成绩:");

Double score = null;

try {

score = Double.valueOf(scanner.nextLine());

} catch (NumberFormatException e) {

// 输入非数字,score保持null

}

Student student = new Student(name, age, score);

System.out.println("学生信息:" + student);

System.out.println("年龄是否有效:" + student.isAgeValid());

System.out.println("成绩是否有效:" + student.isScoreValid());

scanner.close();

}

}

9、包装类常用方法综合应用。调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

public class WrapperMethodTest {

public static void main(String[] args) {

String strInt = "100";

int num = Integer.parseInt(strInt);

System.out.println("字符串\"100\"转int:" + num);

String strDouble = "95.5";

Double d = Double.valueOf(strDouble);

System.out.println("字符串\"95.5\"转Double:" + d);

System.out.println("int最大值:" + Integer.MAX_VALUE);

System.out.println("int最小值:" + Integer.MIN_VALUE);

System.out.println("double最大值:" + Double.MAX_VALUE);

System.out.println("double最小值:" + Double.MIN_VALUE);

Integer a = 50;

Integer b = 100;

System.out.println("a compareTo b:" + a.compareTo(b));

}

}

2.2 自主设计性实验

10、编程实现学生对象信息输出和比较。

要求:定义 Student 类,属性包括学号(id)、姓名(name)、年龄(age),进行封装并提供 get/set 方法及构造方法;重写 toString 方法,格式为 “id:xxx,name:xxx,age:xxx”;重写 equals 方法,学号相同则为相同对象。编写测试类,创建两个 Student 对象,输入信息并判断是否相同,打印对象信息。​

11、编程实现商品类(Goods)的比较​

要求:定义 Goods 类,属性有商品编号(goodsId)、商品名称(goodsName)、价格(price),完成封装、构造方法;重写 equals 方法,商品编号相同则为相同商品;重写 toString 方法展示商品信息。编写测试类,输入两个商品信息,判断是否为同一商品并打印结果。​

四、实验实训数据及结果分析(数据、表格、程序、图形图像、注释、分析说明等)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/4 0:57:06

GitHub项目运营:如何通过开源示例引流至付费服务

GitHub项目运营&#xff1a;如何通过开源示例引流至付费服务 在AI模型部署的实战中&#xff0c;一个训练得再完美的神经网络&#xff0c;若无法在生产环境中快速响应请求&#xff0c;其价值就会大打折扣。想象一下&#xff0c;你的图像分类服务在测试集上准确率高达98%&#xf…

作者头像 李华
网站建设 2026/4/4 0:57:05

猎奇智能冲刺港股:上半年营收2.5亿净利6889万 拟募资9亿

雷递网 雷建平 12月27日苏州猎奇智能设备股份有限公司&#xff08;简称&#xff1a;“猎奇智能”&#xff09;日前递交招股书&#xff0c;准备在深交所创业板上市。猎奇智能计划募资9.1亿元&#xff0c;其中&#xff0c;5.82亿元用于高端智能装备制造建设项目&#xff0c;2.51亿…

作者头像 李华
网站建设 2026/4/3 17:36:20

社交媒体敏感词过滤:高吞吐量文本处理的TensorRT方案

社交媒体敏感词过滤&#xff1a;高吞吐量文本处理的TensorRT方案 在某头部社交平台的一次流量高峰中&#xff0c;系统每秒需处理超过8万条用户评论。这些内容必须在50毫秒内完成敏感词识别——否则发帖延迟将肉眼可见&#xff0c;用户体验急剧下滑。更严峻的是&#xff0c;若漏…

作者头像 李华
网站建设 2026/4/4 0:57:01

STM32单片机开发首选:Keil uVision5下载操作指南

STM32开发从零开始&#xff1a;Keil uVision5 安装与下载配置实战全解析 你是不是也经历过这样的场景&#xff1f; 手里的STM32最小系统板接好线&#xff0c;ST-Link插上电脑&#xff0c;满怀期待地打开Keil准备烧录程序——结果弹出“ No target connected ”或“ Cannot…

作者头像 李华
网站建设 2026/4/4 0:56:58

城市大脑交通调度:TensorRT支撑的实时预测模型集群

城市大脑交通调度&#xff1a;TensorRT支撑的实时预测模型集群 在城市主干道的高峰期&#xff0c;一个路口的信号灯若能提前30秒感知到即将形成的拥堵并动态调整配时方案&#xff0c;整条道路的通行效率可能提升20%以上。这样的场景不再是科幻&#xff0c;而是“城市大脑”正在…

作者头像 李华