作业
- 选择题
- 简答题
- 编码题
- 1. 编写 Java 程序,用于显示人的姓名和年龄。定义一个人类Person。 该类中应该有两个私有属性: 姓名 (name) 和年龄 (age) 。定义构造方法用来初始化数据成员。再定义显示(display()) 方法将姓名和年龄打印出来。在 main 方法中创建人类的实例然后将信息显示。
- 2. 定义一个圆类——Circle,在类的内部提供一个属性:半径(r),同时 提供 两个 方 法 : 计算 面积 ( getArea() ) 和 计算 周长(getPerimeter()) 。 通过两个方法计算圆的周长和面积并且对计算结果进行输出。最后定义一个测试类对 Circle 类进行使用。
- 3. 构造方法与重载:定义一个网络用户类,信息有用户 ID、用户密码、 email 地址。在建立类的实例时把以上三个信息都作为构造函数的参数输入, 其中用户 ID 和用户密码时必须缺省时 email地址是用户 ID 加上字符串"@gameschool.com"。
选择题
1.以下语句中关于Java构造方法的说法错误的是( )
A.构造方法的作用是为创建对象进行初始化工作,比如给成员变量赋值
B.一个Java类可以没有构造方法,也可以提供1个或多个构造方法
C.构造方法与类同名,不能书写返回值类型
D.构造方法的第一条语句如果是super(),则可以省略,该语句作用是调用父类无参数的构造方法
答案:B 可以有多个构造方法,但是不能没有,系统会自动给予构造方法。
2.在Java中,以下程序编译运行后的输出结果为( )
A.6
B.34
C.8
D.7
答案:D
3.在Java中关于静态方法,以下说法中正确的是( )
A.静态方法中不能直接调用非静态方法
B.非静态方法中不能直接调用静态方法
C.静态方法可以用类名直接调用
D.静态方法里可以使用this
答案:AC 非静态方法可以直接调用静态方法,this不能用于static方法中。
4.下列选项中关于Java中类方法的说法错误的是( )
A.在类方法中可用this来调用本类的类方法
B.在类方法中调用本类的类方法时可直接调用
C.在类方法中只能调用本类中的类方法
D.在类方法中调用实例方法需要先创建对象
答案:AC 只要定义好地址,就可以使用外部类。
5.分析如下Java程序的代码所示,则编译运行后的输出结果是( )
A.count1=9; count2=9;
B.count1=10;count2=9;
C.count1=10; count2=10;
D.count1=9; count2=10;
答案:C
简答题
1. 面向过程和面向对象的区别
都是解决问题的思维方式,都是代码组织的方式;解决简单问题可以使用面向过程;解决复杂问题,宏观上使用面向对象把握,微观处理上仍然是面向过程;
2. 类和对象的关系
累可以看做一个模板,或者图纸,系统根据类的定义来造出对象。我们要造一个汽车,怎么样造?类就是这个图纸,规定了汽车的详细信息,然后根据图纸将汽车造出来。
3. 构造方法的作用和特征
作用:构造器又叫构造方法,用于对象的初始化。构造器是一个创建对象时被自动调用的特殊方法,目的是对象的初始化。
特征:通过new关键字调用;构造器虽然有返回值,但是不能定义返回值类型,不能再构造器里使用return返回某个值;如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数,如果已经定义编译器不会自动添加;构造器的名称应与类的名称一致。
4. this关键字的作用和用法
作用:this的本质就是“创建好的对象的地址”,由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this代表“当前对象”。
用法:1.在程序中产生二义性之处,应使用this来指明当前对象;普通方法中,this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。2.使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中使用,并且必须位于构造方法的第一句。3.this不能用于static方法中。
5. 简述static关键字的作用
1.为该类的公用变量,属于类,将该类的所有实例共享,在类被载入时被显式初始化。
2.对于该类的所有对象来说,static成员变量只有一份,被该类的所有对象共享!!!
3.一般用“类名.类属性/方法”来调用。
4.在static方法中不可直接访问非static的成员。
编码题
1. 编写 Java 程序,用于显示人的姓名和年龄。定义一个人类Person。 该类中应该有两个私有属性: 姓名 (name) 和年龄 (age) 。定义构造方法用来初始化数据成员。再定义显示(display()) 方法将姓名和年龄打印出来。在 main 方法中创建人类的实例然后将信息显示。
public class Main {
String name;
int age;
public Main(String name,int age){
this.name=name;
this.age=age;
}
public void Display() {
System.out.println(name);
System.out.println(age);
}
public static void main(String[] args) {
Main main=new Main("韩小狗",25);
main.Display();
}
}
2. 定义一个圆类——Circle,在类的内部提供一个属性:半径®,同时 提供 两个 方 法 : 计算 面积 ( getArea() ) 和 计算 周长(getPerimeter()) 。 通过两个方法计算圆的周长和面积并且对计算结果进行输出。最后定义一个测试类对 Circle 类进行使用。
public class Circle {
double r;
public Circle(double r) {
this.r=r;
}
public void getArea() {
System.out.println(r*r*Math.PI);
}
public void getPerimeter() {
System.out.println(2*r*Math.PI);
}
public static void main(String[] args) {
Circle r=new Circle(1.0);
r.getArea();
r.getPerimeter();
}
}
3. 构造方法与重载:定义一个网络用户类,信息有用户 ID、用户密码、 email 地址。在建立类的实例时把以上三个信息都作为构造函数的参数输入, 其中用户 ID 和用户密码时必须缺省时 email地址是用户 ID 加上字符串"@gameschool.com"。
public class Main {
int id;
String key;
String email;
public Main(int id,String key){
this.id=id;
this.key=key;
email=this.id+"@gameschool.com";
}
public Main(int id,String key,String email) {
this.id=id;
this.key=key;
this.email=email;
}
public void Test() {
System.out.println(id+key+email);
}
public static void main(String[] args) {
Main m=new Main(101,"wwwiii000");
Main m1=new Main(101,"wwwiii000","15764220494@163.com");
m.Test();
m1.Test();
}
}