尚学堂 实战java程序设计 第3、4章课后题答案

版权声明:AlanLee版权所有 https://blog.csdn.net/qq1445654576/article/details/83052481

尚学堂 实战java程序设计 第3、4章课后题答案

第3章
一、选择题
1.A
2.BD
解析:switch的的判断表达式的数据类型:byte short int char
3.A
解析:0+3+5=8
4.BD
解析:函数重载时对返回数据类型不做检查,但形参数量或类型必须变化,B和原函数是同一函数,D中形参数据个数和类型和原函数相同
5.B
解析:非静态变量,形参并不影响实参.
二、简答题
1.答:相同点:他们都是用来处理多分支条件的结构。
不同点:switch语句只能处理等值条件判断的情况,而且条件只能是整型变量或字符型变量。多重if选择结构的限制,特别适合某个变量处于某个连续区间时的情况。
2.答:break是跳出循环,continue是直接进入下一次循环
3.答:使用break- label,先在循环之前加入一个label标签,然后break label;
4.答:定义:一个类中可以有多个相同名字的方法
作用:行为多态
判断依据:同方法名,不同的形参个数或数据类型
5.答:定义:方法自身调用自身
优点:代码简洁,可以省去很多循环
缺点:需要消耗大量计算机资源

三、编码题
1.
代码

/**
 * 1. 从键盘输入某个十进制整数数,转换成对应的二进制整数并输出。
 */
import java.util.Scanner;
public class Homework1 {
	public static void main(String [] args){
		//输入一个十进制数
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个整数:");
		int num2 = sc.nextInt();
		//转换
		int num = num2;
		String str="";
		do{
			//除以2得到商
			int div = num/2;
			//得到余数作为二进制位
			int mod = num%2;
			str = mod + str;			
			//商作为被除数
			num = div;
		}while(num!=0);//被除数不是零		
		//输出二进制数
		System.out.println(num2+"------>"+str);		
	}
}

代码

/**
 * 2.编程求:∑1+∑2+……+∑100。
 * @author Administrator
 *
 */
public class Homework2 {
	public static void main(String[] args) {
   	 int sum_i=0;
   	 for(int i=1;i<=5;i++){
   		 int sum_j=0;
   		 for(int j=1;j<=i;j++){
   			 sum_j=sum_j+j;	 	 
   		 }
   		 sum_i=sum_i+sum_j; 
   	 }
   	 System.out.println(sum_i);	 
	}
}

代码

/**
 * 3. 编写递归算法程序:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求数列的第40位数是多少。
 * @author Administrator
 *
 */
public class Homework3 {
	public static void main(String[] args) {
		System.out.println(sum(40));
	}
	public static long sum(int n) {
		if (n <= 0) {
			return 0;
		} else if (n == 1 || n == 2) {
			return 1;
		} else {
			return sum(n - 1) + sum(n - 2);
		}
	}
}

第4章
一、选择题
1.BD
解析:
B:类必须有构造方法,若程序未写,这系统自动调用系统构造方法.
D:super()会调用父类的构造方法,但父类的构造方法不一定无参

2.D
解析:3+4=7
3.AC
解析:
A:静态方法在类被加载进内存时就分配入口地址,此时不一定有非静态方法
D:this表示构造方法创建的对象,在该类被调用时候才产生,而静态方法在加载内存时候就存在,此时不存在对象,不能用this调用.
4.AC
解析:
C:只要权限够,可以调用其他类的方法
5.C
解析:count是全局变量,count1()方法覆盖后为10;如果count1中的count1前加int,使count1()中的count成为局部变量,则为B

二、简答题
1.答:面向过程是将任务分步,一步一步实现.面向对象是将任务分块拆分,每块再用面向过程实现.
2.答:类是对象的抽象集合,对象是类的具体个体.
3.答:
作用:初始化对象
特征:必须与类名相同,且没有类型
4.答:
作用:代表正在调用该方法的对象
用法:this.成员变量
5.答:作用:为了共享变量或方法

三、编码题
1.
代码

package cn.sxt.exec;
public class Circle {
	private int r;
	/** 无参构造 */
	public Circle(){}
/** 有参构造,初始化半径*/
	public Circle(int r){
		this.r=r;
	}
	/** 也可以使用setR方法初始化半径 */
	public void setR(int r){
		this.r = r;
	}
	/**计算 面积 */
	public void getArea(){
		double area = Math.PI * r * r;//从Math工具类得到π的值
		System.out.println("圆的面积为:"+area);
	}
	/** 计算 周长 */
	public void getPerimeter(){
		double zc = Math.PI * 2 * r;
		System.out.println("圆的周长为:"+zc);
	}
}

代码

package cn.sxt.exec;
public class Circle {
	private int r;
	/** 无参构造 */
	public Circle(){}
/** 有参构造,初始化半径*/
	public Circle(int r){
		this.r=r;
	}
	/** 也可以使用setR方法初始化半径 */
	public void setR(int r){
		this.r = r;
	}
	/**计算 面积 */
	public void getArea(){
		double area = Math.PI * r * r;//从Math工具类得到π的值
		System.out.println("圆的面积为:"+area);
	}
	/** 计算 周长 */
	public void getPerimeter(){
		double zc = Math.PI * 2 * r;
		System.out.println("圆的周长为:"+zc);
	}
}

代码

package cn.sxt.exec;
public class People {
	private String id;
	private String password;
	private String email;
	/** 无参构造 */
	public People(){
		
	}
	/** 全参构造 */
	public People(String id,String password,String email){
		this.id = id;
		this.password=password;
		this.email = email;
	}
	public People(String id,String password){
		this.id = id;
		this.password=password;
		this.email=id+"@gameschool.com";
	}
	public void show() {
		System.out.println("编号:"+this.id);
		System.out.println("密码:"+this.password);
		System.out.println("邮件:"+this.email);
	}
	public static void main(String[] args) {
		//调用全参构造
		People p1 = new People("sxt0001","123456","[email protected]");
		p1.show();
		//调用无参构造
		People p2 = new People("sxt0002","654321");
		p2.show();
	}
}

猜你喜欢

转载自blog.csdn.net/qq1445654576/article/details/83052481