实验报告_实验3 类与对象(学生学号_姓名)
一、实验目的
1.熟悉类的组成,掌握类的声明方法;
2.理解构造方法的作用,并掌握构造方法的定义;
3.熟练使用访问器和设置器实现信息隐藏和封装;
4.熟悉一般方法、构造方法的重载;
5.能够正确地区分静态变量与实例变量、静态方法与实例方法的不同,掌握静态变量和静态方法的使用;
6.掌握对象的创建、引用和使用及向方法传递参数的方式;
7.掌握this关键字的使用以及对象数组的创建和访问;
8.掌握Java包的创建、包成员的各种访问方式;
9掌握一维数组:声明,创建,初始化,数组元素的访问;
10.掌握多维数组的概念:二维数组的声明,初始化,元素的访问。
二、 实验内容与步骤
1.请回答下列问题:
1Cirecle类定义了几个属性?它们的类型、访问权限各为什么?
答:两个PIfloatl类型,静态私有权限
Radiusfloat;类型,私有权限
2)类中的“PI”的值可以在程序的方法中更改吗?
答:不可以,因为PI为静态变量
3Cirecle类定义了几个方法?它们的访问权限怎样?
:四个,getRadius()setRadius(float radius)getPerimeter()getArea()都是公有权限
2.写出 Rectangle类的程序代码:
class Rectangle
{
    private float width;
    private float length;
    public float getWidth( )            //获取矩形宽度
    {return width;}
    public float getLength( )            //获取矩形长度
    {return length;}
    public float getPerimeter( )            //获取矩形周长
    {return 2*(width+length);}
    public float getArea( )                //获取矩形面积
    {return (width*length);}
    public void setWidth(float w)        //设置矩形宽度
    {width=w;}
    public void setLength(float l)        //设置矩形长度
    {length=l;}
}
3.回答下列问题:
(1)该程序中有几个类?主类是什么?如果将这两个类放在一个文件中,源程序文件名应是什么?
答:两个类:CircleCircleTest;主类是CircleTest;源程序文件名是CircleTest
(2)Circle类定义了几个构造方法(即构造器)Circle类中存在无参构造方法吗?如果要使用无参构造方法,应如何做?
答:Circle类定义了个构造方法;不存在,写入Circle(){}
(3)Circle Test类中创建了几个Circle对象?这些对象是如何创建的?
答:Circle Test类创建了两个Circle对象;Circle 对象名=new  Circle()。
(4)Circle Test类中如何调用对象的方法?
答:Circle Test类调用对象方法: 对象名.方法
4.写出OverrideTest中所缺的三行代码:
public class OverrideTest {
    public static void main(String[] args) {
        //使用Box类的无参构造方法创建方法创建对象box1
                                                    ;       
        System.out.println(box1);
        //使用Box类的带一个参数的构造方法创建对象box2,参数值为5.0
                                                    ;
        System.out.println(box2);
       
    //使用带Box类带三个参数的构造方法创建对象box3,其中三个参数长、宽、高分别为10.120.230.3
                                                    ;
        System.out.println(box3);
    }
}
Box box1=new Box()  Box box2=new Box(5.0);    Box box3=new Box(10.1,20.2,30.3);
5.回答下列问题:
(1) this.length=length; 中的this代表什么?
答:this代表类;
(2) this(x, x, x); 中的this是什么含义?
6(基础题)一维数组的使用:根据注释填充程序所缺代码,然后编译、运行该程序,并回答相关问题:
//一维数组:声明,创建,初始化,数组元素的引用及数组拷贝
        ______String week[]__________;                    // 声明一个名为weekString类型的一维数组
        ______week=new string[7]__________________;            // week数组分配存放7个字符串的空间
        for (int i=0; i<week.length;i++)    // 输出week数组各元素的值
            System.out.println("week["+i+"] = "+____week[i]_________);
java定义一维数组并赋值
问题:
(1)一维数组如何声明、创建?如果没有给数组元素赋值,则它们的取值如何?
答:a:数据类型[ ]  数组名=new  数据类型[数组的长度]
b:数据类型  数组名[ ]=new  数据类型[数组的长度]
如果没有给数组赋值,则系统会自动默认它为0
(2)数组的静态初始化具有什么功能?
答:静态初始化:在定义数组的同时就为数组元素分配空间并赋值。
(3)要了解数组元素的个数,可用访问数组的什么属性得到?
答:数组都有一个属性length来指明它的长度,例如:a.length 指明数组a的长度(即元素个数)
(4)怎样引用数组的元素?写出它的下标取值范围。
答:数组名[index]
其中:index为数组元素下标,可以是整型常量或整型表达式,如:a[0] , b[i] , c[5*i],利用循环语句可以批量设置或访问数组元素的值。
数组元素下标从0开始,最大下标为: 数组长度-1
7(基础题)二维数组的使用:根据注释填充所缺代码,然后编译、运行该程序,并回答相关问题:
//二维数组:声明,创建,动态初始化,数组元素的引用
        // 声明一个名为myArray的数组,该数组有2,每行列数不等,并为其分配内存空间
        _______ int  myArray[2][]__________________;           
        myArray[0]=new int[5];                    // 第一行有5个元素,并为其分配内存空间
        ______ myArray[1]=new int[10]__________________;                // 第二行有10个元素,并为其分配内存空间
       
        for (int j=0; j<myArray[0].length;j++)    // 1-10之间的随机整数给第一行元素赋值
            myArray[0][j]=_______ (int)(Math.random()*1+9)_______________;
       
        for (int j=0; j<______ myArray[1].length __________;j++)    // 100-200之间的随机整数给第二行元素赋值
            myArray[1][j]=(int)(Math.random()*100+100);
           
        for (int i=0; i<_____ myArray[1].length ___________;i++){    // 输出myArray数组各元素的值
            for (int j=0; j<myArray[i].length;j++){
问题:
(1)二维数组如何声明、创建?二维数组的列数是否一定要求相同?
答:数据类型  数组名[ ][ ]     数据类型[ ][ ]  数组名;不要求相同。