一、实验目的
- 掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;
- 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;
二、实验内容
简要说明实验内容:
-
编写一个类TestPrime,该类有一个int类型的10×10二维数组成员变量,一个int类型的质数个数成员变量,成员方法init: 将二维数组的初始化为1-100,如1-10在第一行,11-20在第二行等;成员方法display:按行输出该二维数组;成员方法getPrimeTotalNumber:得到二维数组中质数的个数;成员方法getPrimeAndPosition:按行输出每个质数及其位置,格式为质数(行号,列号),如质数13(2,3);私有方法isPrime: 判断一个数是否为质数;main方法实现输出二维数组、质数及其位置、质数个数。
-
v编写一个类ArraySort,该类有一个int类型的一维数组sim的成员变量,和一个setOrder()的成员方法,并有一个带有一个参数的构造方法,该参数将在构造方法中为成员变量数组sim作初始化。方法setOrder()不带参数也不返回值,它将成员变量数组sim的元素从小到大排序。 另有一个类为TestArray,它只有一个main()方法,在该方法中,创建ArraySort类的对象,并用一个int类型的一维数组来实例化这个对象的成员变量数组sim。试调用这个对象的setOrder()方法,并输出其值。
-
v创建一个类Point,有成员变量x, y,它们都是int类型。该类有四个成员方法setX(int)、setY(int)、getPoint()和movePoint(int,int)。setX(int)和setY(int)方法是设置成员变量x和y的值,getPoint()方法则获得由x, y构成的坐标点,movePoint(int,int)带两个int参数,用来修改x,y构成的坐标点。Point类有一个构造方法,不带参数,为x, y设置原点值。另一个类为TestPoint,有一个main()方法,用来对Point类的实例进行测试。要求为其实例设置(0,0)坐标点,再移动到(10, 20)坐标点上,并输出实例调用相应的方法的结果。
三、实验过程
1. 实验内容1
了解完要做的事情后,就要开始写代码。严格按照实验任务1写出来的代码是:
public class TestPrime {
int[][] arr;
int prime=0;
public void init(){
arr=new int[10][10];
for (int i = 0; i < 100; i++) {
arr[i/10][i%10]=i+1;
}
}
public void display(){
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
public int getPrimeTotalNumber(){
return prime;
}
public void getPrimeAndPosition(){
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (isPrime(arr[i][j])){
System.out.printf("%d (%d,%d)\n",arr[i][j],i,j);
prime++;
}
}
}
}
private boolean isPrime(int num){
if (num==1)
return false;
int n= (int)Math.sqrt(num);
for (int i = 2; i <= n; i++) {
if (num%i==0)
return false;
}
return true;
}
public static void main(String[] args) {
TestPrime t=new TestPrime();
t.init();
t.display();
t.getPrimeAndPosition();
System.out.println(t.getPrimeTotalNumber());
}
}
运行结果(中间结果太长部分没有展示):
2. 实验内容2
根据具体实验任务先编写类ArraySort,按部就班编写完属性和方法后,再编写类TestArray中的main方法调用即可。
public class ArraySort {
int[] sim;
public ArraySort(int[] sim){
this.sim=sim;
}
public void setOrder(){
int n = sim.length;
for (int i = 0; i < n - 1; i++) {
boolean key = false;
for (int j = 0; j < n - i - 1; j++) {
if (sim[j] > sim[j + 1]) {
key = true;
int temp = sim[j];
sim[j] = sim[j + 1];
sim[j + 1] = temp;
}
}
if (!key) {
break;
}
}
}
}
class TestArray{
public static void main(String[] args) {
int[] arr={243,4,55,73,21};
ArraySort a=new ArraySort(arr);
for (int j : arr) {
System.out.print(j + " ");
}
System.out.println();
a.setOrder();
for (int j : arr) {
System.out.print(j + " ");
}
}
}
运行结果:
3. 实验内容3
依然是根据实验任务的描述来编写代码。
public class Point {
int x,y;
public Point(){
x=0;y=0;
}
public void setX(int x){
this.x=x;
}
public void setY(int y) {
this.y = y;
}
public int[] getPoint(){
return new int[]{x, y};
}
public void movePoint(int x,int y){
setX(x);
setY(y);
}
}
class TestPoint{
public static void main(String[] args) {
Point p=new Point();
int[] arr= p.getPoint();
System.out.printf("坐标点(%d,%d)\n",arr[0],arr[1]);
p.movePoint(10,20);
arr=p.getPoint();
System.out.printf("坐标点(%d,%d)\n",arr[0],arr[1]);
}
}
运行结果:
四、总结与反思
Java中的类和对象是面向对象编程的核心概念。类定义了对象的属性和方法,是对象的模板;而对象则是类的实例,具有类的所有属性和方法。通过类和对象,我们可以更好地组织和管理代码,提高代码的可读性和可维护性。对于Java这种纯面向对象的编程语言,掌握类与对象的性质显得更为重要。我们应该多加练习,早日熟悉并应用这种方法。