news 2026/4/17 23:29:47

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/17 12:47:53

初创团队快速验证MVP:三天搭好TensorRT推理后端

初创团队快速验证MVP&#xff1a;三天搭好TensorRT推理后端 在智能安防摄像头前&#xff0c;一个初创团队正焦急地等待模型响应——他们用PyTorch部署的图像分类服务&#xff0c;在实时视频流中每帧处理耗时超过80毫秒&#xff0c;卡顿明显。用户体验报告刚出&#xff0c;投资人…

作者头像 李华
网站建设 2026/4/17 13:31:06

碳中和目标下:TensorRT如何帮助减少AI碳足迹?

碳中和目标下&#xff1a;TensorRT如何帮助减少AI碳足迹&#xff1f; 在人工智能飞速发展的今天&#xff0c;我们享受着智能推荐、语音助手、自动驾驶等前沿技术带来的便利。但鲜有人关注这些“聪明”服务背后的代价——一个大型语言模型的训练过程所产生的碳排放&#xff0c;可…

作者头像 李华
网站建设 2026/4/18 11:32:05

故障排查手册:常见TensorRT引擎加载失败原因汇总

故障排查手册&#xff1a;常见TensorRT引擎加载失败原因汇总 在AI模型从实验室走向生产部署的过程中&#xff0c;推理性能的“最后一公里”优化往往决定了系统的成败。尽管PyTorch或TensorFlow训练出的模型表现优异&#xff0c;但直接部署时常常面临高延迟、低吞吐的问题。NVID…

作者头像 李华
网站建设 2026/4/18 8:36:11

中小企业如何对抗大厂算力壁垒?答案是TensorRT

中小企业如何对抗大厂算力壁垒&#xff1f;答案是TensorRT 在今天的AI竞赛中&#xff0c;一个残酷的现实摆在眼前&#xff1a;大厂动辄部署成百上千张A100 GPU&#xff0c;构建庞大的推理集群&#xff0c;而中小企业却常常因为几块T4卡的预算反复权衡。这种“算力鸿沟”真的无法…

作者头像 李华
网站建设 2026/4/18 6:30:35

【word】的一些通配符使用方法

Word通配符使用方法通配符是Word中用于高级查找和替换的特殊字符&#xff0c;能够实现模糊匹配或批量操作。以下是常用通配符及其功能说明&#xff1a;常用通配符列表?&#xff1a;匹配任意单个字符&#xff08;如b?t可找到“bat”、“bit”&#xff09;。*&#xff1a;匹配任…

作者头像 李华