学习目标:
- 掌握类与对象的基础概念,理解类与对象的关系;
- 掌握对象与对象变量的关系;
- 掌握预定义类的基本使用方法,熟悉Math类、String类、math类、Scanner类、LocalDate类的常用API;
- 掌握用户自定义类的语法规则,包括实例域、静态域、构造器方法、更改器方法、访问器方法、静态方法、main方法、方法参数的定义要求;(重点、难点)
- 掌握对象的构造方法、定义方法及使用要求;(重点)
- 理解重载概念及用法;
- 掌握包的概念及用法;
- 了解文档注释技术;
第一部分:理论知识学习部分
1.类:类是构造对象的模板或蓝图。由类构造对象的过程称为创建类的实例;
2.对象:重点——①对象的行为②对象的状态③对象标识
3.类与对象的关系:类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。
4.使用预定义类:Math类(数学库函数),math类(大整数、大浮点数),String类,Scanner类
5.用户自定义类,实例域、静态域、构造器方法、更改器方法、访问器方法、静态方法、main方法、方法参数。
第二部分:实验四
1、实验目的与要求
(1) 理解用户自定义类的定义;
(2) 掌握对象的声明;
(3) 学会使用构造函数初始化对象;
(4) 使用类属性与方法的使用掌握使用;
(5) 掌握package和import语句的用途。
2、实验内容和步骤
实验1 测试以下程序,掌握文件输入输出程序设计技术
import java.io.*; import java.util.*; public class FileWriteReadTest { public static void main(String[] args) throws IOException{ //写入文件演示 PrintWriter out = new PrintWriter("myfile.txt"); out.println("姓名 高数 Java 数据结构 平均成绩 总成绩"); out.println("张三 20 30 40 0 0"); out.println("李四 50 60 70 0 0"); out.close();//输出完毕,需要close //读入文件演示 Scanner in = new Scanner(new File("myfile.txt"));//为myfile.txt这个File创建一个扫描器in int number = 1;//行号 System.out.println(in.nextLine()); while(in.hasNextLine()){//判断扫描器是否还有下一行未读取,该循环把文件的每一行都读出 String line = in.nextLine();//读出myfile.txt的下一行 System.out.print("第"+(++number)+"行的内容: "); Scanner linescanner = new Scanner(line);//行内容建立扫描器 linescanner.useDelimiter(" ");//使用空格作为分隔符 String name = linescanner.next(); String math = linescanner.next(); String java = linescanner.next(); String ds = linescanner.next(); String avg = linescanner.next(); String total = linescanner.next(); System.out.println("name="+name+" math="+math+" java="+java+" ds="+ds+" avg"+avg+" total="+total); } in.close();//读入完毕,最后需要对其进行close。 } }
实验结果:
实验2 导入第4章示例程序并测试。
测试程序1:
public class EmployeeTest { public static void main(String[] args) { // fill the staff array with three Employee objects Employee[] staff = new Employee[3]; staff[0] = new Employee("Carl Cracker", 75000, 1987, 12, 15); staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1); staff[2] = new Employee("Tony Tester", 40000, 1990, 3, 15); // raise everyone's salary by 5% for (Employee e : staff) e.raiseSalary(5); // print out information about all Employee objects for (Employee e : staff) System.out.println("name=" + e.getName() + ",salary=" + e.getSalary() + ",hireDay=" + e.getHireDay()); } }
import java.time.LocalDate; class Employee { private String name; private double salary; private LocalDate hireDay; public Employee(String n, double s, int year, int month, int day) { name = n; salary = s; hireDay = LocalDate.of(year, month, day); } public String getName() { return name; } public double getSalary() { return salary; } public LocalDate getHireDay() { return hireDay; } public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100; salary += raise; } }
结果如下:
import java.util.Scanner; public class StudentTest { public static void main(String[] args) { Students[] staff = new Students[3]; System.out.println("请输入学生信息:"); @SuppressWarnings("resource") Scanner in = new Scanner(System.in); for(int i=0;i<staff.length;i++) { staff[i]=new Students(in.next(),in.next(),in.next()); } System.out.println("name"+" "+"sex"+" "+" "+"javascore"); for (Students e : staff) System.out.println(e.getName() +" "+e.getSex()+" "+e.getJavaScore()+" "); } } class Students { private String name; private String sex; private String javascore; public Students(String n, String s, String j) { name = n; sex = s; javascore =j; } public String getName() { return name; } public String getSex() { return sex; } public String getJavaScore() { return javascore; } }
结果如下:
测试程序2:
测试程序3:
测试程序4:
测试程序5:
实验3
import java.util.*; public class RectangleCircle { @SuppressWarnings("resource") public static void main(String[] args) { Scanner price=new Scanner (System.in); System.out.println("输入矩形的长、宽:"); double x=price.nextInt(); double y=price.nextInt(); System.out.println("矩形周长="+(x+y)*2); System.out.println("矩形面积="+(x*y)); System.out.println("输入圆的半径:"); double r=price.nextInt(); double π = 3.14; System.out.println("圆周长="+(2*π*r)); System.out.println("圆面积="+(r*r*π)); System.out.println("周长和="+((x+y)*2+2*π*r)); System.out.println("面积和="+((x*y)+r*r*π)); } }
结果如下:
总结:
通过本周的学习,我学习到了面向对象程序设计(OOP)的概论,之前总是听老师说Java是一门面向对象的语言,我也终于知道了什么是类,什么是对象,了解了对象的三个特征:对象的行为,对象的状态,对象标识。掌握了如何使用预定义类的基本,和构造并初始化对象。课上我学习到了Java类库中的LocalDate类,让我对类有了更深的认识。但是我对用户自定义类的内容了解的还不够,对于第四章我还需要更多的学习。