1. 本章学习总结
这份是Java第3次实验提纲,聚焦面向对象1的基本概念与继承基础。,还有PTA相关任务,像构造方法与toString、构造方法与初始化块的编程题,程序填空、编程题、函数题,以及使用jar包(调用外部jar包),另外也涉及IDEA的使用。
2. 书面作业
2.1 构造方法与toString
点击查看代码
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();Person[] persons = new Person[n];for (int i = 0; i < n; i++) {String name = scanner.next();int age = scanner.nextInt();boolean gender = scanner.nextBoolean();persons[i] = new Person(name, age, gender);}for (int i = n - 1; i >= 0; i--) {System.out.println(persons[i]);}Person p = new Person();System.out.println(p);scanner.close();}
}class Person {private String name;private int age;private boolean gender;private int id;public Person() {System.out.println("This is constructor");System.out.println(name + "," + age + "," + gender + "," + id);}public Person(String name, int age, boolean gender) {this.name = name;this.age = age;this.gender = gender;}public String toString() {return "Person [name=" + name + ", age=" + age + ", gender=" + gender + ", id=" + id + "]";}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public boolean isGender() {return gender;}public void setGender(boolean gender) {this.gender = gender;}public int getId() {return id;}public void setId(int id) {this.id = id;}
}
点击查看代码
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();Person[] persons = new Person[n];for (int i = 0; i < n; i++) {String name = scanner.next();int age = scanner.nextInt();boolean gender = scanner.nextBoolean();persons[i] = new Person(name, age, gender);}for (int i = n - 1; i >= 0; i--) {System.out.println(persons[i]);}Person p = new Person();System.out.println(p);scanner.close();}
}class Person {private String name;private boolean gender;private int age;private int id;private static int count = 0;static {System.out.println("This is static initialization block");}{this.id = count++;System.out.println("This is initialization block, id is " + this.id);}public Person() {System.out.println("This is constructor");System.out.println(name + "," + age + "," + gender + "," + id);}public Person(String name, int age, boolean gender) {this.name = name;this.age = age;this.gender = gender;}public String toString() {return "Person [name=" + name + ", age=" + age + ", gender=" + gender + ", id=" + id + "]";}public String getName() {return name;}public void setName(String name) {this.name = name;}public boolean isGender() {return gender;}public void setGender(boolean gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getId() {return id;}public void setId(int id) {this.id = id;}
}
点击查看代码
public Rectangle() {this(5, 6);}public Rectangle(int width, int length) {this.width = width;this.length = length;}public String toString() {return String.format("width=%d,length=%d", this.width, this.length);}
点击查看代码
import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);Rectangle[] rectangles = new Rectangle[2];for (int i = 0; i < 2; i++) {int width = scanner.nextInt();int length = scanner.nextInt();rectangles[i] = new Rectangle(width, length);}Circle[] circles = new Circle[2];for (int i = 0; i < 2; i++) {int radius = scanner.nextInt();circles[i] = new Circle(radius);}int totalPerimeter = 0;int totalArea = 0;for (Rectangle rect : rectangles) {totalPerimeter += rect.getPerimeter();totalArea += rect.getArea();}for (Circle circle : circles) {totalPerimeter += circle.getPerimeter();totalArea += circle.getArea();}System.out.println(totalPerimeter);System.out.println(totalArea);System.out.println(Arrays.deepToString(rectangles));System.out.println(Arrays.deepToString(circles));scanner.close();}
}class Rectangle {private int width;private int length;public Rectangle(int width, int length) {this.width = width;this.length = length;}public int getPerimeter() {return 2 * (width + length);}public int getArea() {return width * length;}@Overridepublic String toString() {return "Rectangle [width=" + width + ", length=" + length + "]";}
}class Circle {private int radius;public Circle(int radius) {this.radius = radius;}public int getPerimeter() {return (int)(2 * Math.PI * radius);}public int getArea() {return (int)(Math.PI * radius * radius);}@Overridepublic String toString() {return "Circle [radius=" + radius + "]";}
}
点击查看代码
class Fraction {private int numerator;private int denominator;public Fraction(int a, int b) {this.numerator = a;this.denominator = b;simplify();}private int gcd(int a, int b) {return b == 0 ? a : gcd(b, a % b);}private void simplify() {if (numerator == 0) {denominator = 1;return;}int g = gcd(Math.abs(numerator), Math.abs(denominator));numerator /= g;denominator /= g;if (denominator < 0) {numerator = -numerator;denominator = -denominator;}}public double toDouble() {return (double) numerator / denominator;}public Fraction plus(Fraction r) {int newNumerator = this.numerator * r.denominator + r.numerator * this.denominator;int newDenominator = this.denominator * r.denominator;return new Fraction(newNumerator, newDenominator);}public Fraction multiply(Fraction r) {int newNumerator = this.numerator * r.numerator;int newDenominator = this.denominator * r.denominator;return new Fraction(newNumerator, newDenominator);}@Overridepublic String toString() {if (denominator == 1) {return String.valueOf(numerator);}return numerator + "/" + denominator;}
}
掌握static属性、初始化块(静态/非静态)执行时机;理解this关键字、toString方法用法;体会多态对代码扩展性的作用,以及抽象类、ArrayList、Objects工具类的应用。学会在IDEA中打包jar包,及在其他项目中导入并调用其中类的方法;了解类的访问权限对jar包使用的影响。通过实验巩固了Java类与对象核心概念,掌握了jar包工程化操作,为后续开发奠定基础。