尚学堂JAVA第四章课后答案

一、选择题

1.以下语句中关于Java构造方法的说法错误的是(b )。(选择一项)

A.构造方法的作用是为创建对象进行初始化工作,比如给成员变量赋值

B.一个Java类可以没有构造方法,也可以提供1个或多个构造方法

C.构造方法与类同名,不能书写返回值类型

D.构造方法的第一条语句如果是super(),则可以省略,该语句作用是调用父类无参数的构造方法

2.在Java中,以下程序编译运行后的输出结果为( d)。(选择一项)
public class Test {
int x, y;
Test(int x, int y) {
this.x = x;
this.y = y;
}
public static void main(String[] args) {
Test pt1, pt2;
pt1 = new Test(3, 3);
pt2 = new Test(4, 4);
System.out.print(pt1.x + pt2.x);
}
}

A.6

B.34

C.8

D.7

3.在Java中关于静态方法,以下说法中正确的是(ac )。(选择二项)

A.静态方法中不能直接调用非静态方法

B.非静态方法中不能直接调用静态方法

C.静态方法可以用类名直接调用

D.静态方法里可以使用this

4.下列选项中关于Java中类方法的说法错误的是(ac )。(选择二项)

A.在类方法中可用this来调用本类的类方法

B.在类方法中调用本类的类方法时可直接调用

C.在类方法中只能调用本类中的类方法

D.在类方法中调用实例方法需要先创建对象

5.分析如下Java程序的代码所示,则编译运行后的输出结果是( c)。(选择一项)
public class Test {
int count=9;
public void count1(){
count=10;
System.out.print(“count1=”+count);
}
public void count2(){
System.out.print(“count2=”+count);
}
public static void main(String[ ] args) {
Test t=new Test();
t.count1();
t.count2();
}
}

 A.count1=9; count2=9;

 B.count1=10;count2=9;

 C.count1=10; count2=10;

 D.count1=9; count2=10;

二、简答题

1. 面向过程和面向对象的区别。
  都是解决问题的思维方式,都是代码组织的方式。
  解决简单问题可以使用面向过程
  解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程。
  2. 类和对象的关系
   类可以看成一类对象的模板,对象可以看成该类的一个具体实例。

3. 构造方法的作用和特征
  构造器也叫构造方法(constructor),用于对象的初始化。
  构造器是一 个创建对象时被自动调用的特殊方法,目的是对象的初始化。
  构造器的名称应与类的名称一致。Java通过new关键字来调用构造器,从而返回该类的实例,是一种特殊的方法。

4. this关键字的作用和用法
  在程序中产生二义性之处,应使用this来指明当前对象;普通方法中,this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。
  使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一句。
  this不能用于static方法中。

5. 简述static关键字的作用。
  在类中,用static声明的成员变量为静态成员变量,也称为类变量。 类变量的生命周期和类相同,在整个应用程序执行期间都有效。它有如下特点:为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化。
  对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!
  一般用“类名.类属性/方法”来调用。(也可以通过对象引用或类名(不需要实例化)访问静态成员。)
   在static方法中不可直接访问非static的成员。

三、编码题

1. 编写 Java 程序用于显示人的姓名和年龄。定义一个人类Person。 该类中应该有两个私有属性: 姓名 (name) 和年龄 (age) 。定义构造方法用来初始化数据成员。再定义显示(display()) 方法将姓名和年龄打印出来。在 main 方法中创建人类的实例然后将信息显示。

/*编写 Java 程序用于显示人的姓名和年龄
定义一个人类Person。 该类中应该有两个私有属性: 姓名 (name) 和年龄 (age) 
定义构造方法用来初始化数据成员。再定义显示(display()) 方法将姓名和年龄打印出来
在 main 方法中创建人类的实例然后将信息显示。
*/
class Person{
	int age;//定义年龄
	String name;//定义姓名
	//构造方法
	public Person(int age,String name) {
		this.age=age;
		this.name=name;
	}
	void display() {
		System.out.println("年龄"+age);
		System.out.println("姓名"+name);
	}
	
}
public class HomeWork01 {
	public static void main(String[] args) {
		Person p1 = new Person(18,"李俊");
		p1.display();
	}
}

2. 定义一个圆类——Circle,在类的内部提供一个属性:半径®,同时 提供 两个 方 法 : 计算 面积 ( getArea() ) 和 计算 周长(getPerimeter()) 。 通过两个方法计算圆的周长和面积并且对计算结果进行输出。最后定义一个测试类对 Circle 类进行使用。

/*定义一个圆类——Circle,在类的内部提供一个属性:半径(r),同时 提供 两个 方 法 : 
计算 面积 ( getArea() ) 和 计算 周长(getPerimeter()) 。 
通过两个方法计算圆的周长和面积并且对计算结果进行输出。
最后定义一个测试类对 Circle 类进行使用
*/
class Circle{
	int r;
	public Circle(int r) {
		this.r=r;
	}
	public int getArea() {
		int area = (int)(r*r*(Math.PI));
		System.out.println("面积是:"+area);
		return(area);
	}
	public int getPerimter() {
		int perimter = (int)(2*r*(Math.PI));
		System.out.println("周长是:"+perimter);
		return(perimter);
	}
}
public class HomeWork02 {
	public static void main(String[] args) {
		Circle c = new Circle(10);
		c.getArea();
		c.getPerimter();
	}
}


面积是:314
周长是:62

3. 构造方法与重载:定义一个网络用户类,信息有用户 ID、用户密码、 email 地址。在建立类的实例时把以上三个信息都作为构造函数的参数输入, 其中用户 ID 和用户密码时必须缺省时 email地址是用户 ID 加上字符串"@gameschool.com"。

/*构造方法与重载:定义一个网络用户类
 信息有用户 ID、用户密码、 email 地址
 在建立类的实例时把以上三个信息都作为构造函数的参数输入
  其中用户 ID 和用户密码时必须缺省时 email地址是用户 ID 加上字符串"@gameschool.com"
 */
class NetUser{
	
	int id;
	String pwd;
	String emailAddress;
	
	public NetUser(int id,String pwd) {
		this.id = id;
		this.pwd= pwd;
		this.emailAddress=id + "@gameschool.com";
	}
	public NetUser(int id,String pwd,String emailAddress) {
		this.id=id;
		this.pwd=pwd;
		this.emailAddress=emailAddress;
	}
	public void User(){
		System.out.println(id+"\t"+pwd+"\t"+emailAddress);
	}
}


public class HomeWork03 {
	public static void main(String[] args) {
		NetUser n1 = new NetUser(101,"dfdfghgfgj");
		n1.User();
		NetUser n2 = new NetUser(102,"gffdgfggf","1111@qq.com");
		n2.User();
	}
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值