《Java基础入门第2版》--黑马程序员 课后答案及其详解 第2章 Java编程基础


一、填空题

	1.true和false
	2.基本数据类型和引用数据类型
	3. (1)&
	(2)&&
	(3)| 
	(4)||
	4. 5
	5. 56

二、判断题

	1.×错
	2.√对
	3.×错
	4.√对
	5.×错

三、选择题

	1、AD
	2、C	
	3、C	
	4、B	
	5、A 

四、简答题

1、Java语言的八种基本数据类型有:byte字节型,占一个字节。short短整型,占两个字节。int整型,占4个字节。long长整型,占8个字节。float单精度浮点型,占4个字节。double双精度浮点型,占8个字节。char字符型,占两个字节。boolean型,表示逻辑值,有true和false两个值,分别占一个字节。

2、如果使用“&”在表达式之间进行连接,那么无论任何情况,“&”两边的表达式都会参与计算。如果使用“&&”进行连接,当“&&”左边的表达式为false,则不会执行其右边的表达式。例如定义int x = 2,y = 0; boolean b = x < y & x / 2 > 0表达是会发生被0除异常,因为x / y的表达式执行了。而boolean b = x < y & x / 2 > 0是不会出现这种异常的,因为x < y为false,表达式x / y不会执行。

3、作用:break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
continue结束本次循环,继续下一次循环。
区别:break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循
环中剩余的语句。(break语句也在switch语句中使用)
continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行
下一次是否执行循环的判定。

五、编程题

public class getSum {
    
    
	public static void main(String[] args) {
    
    
		int sum = 0;
		for (int i = 1; i < 100; i++) {
    
    
		System.out.println("i="+i);
			if (i % 2 != 0){
    
    
				sum += i;
		}
		}
		System.out.println(sum);
	}
}

2.
public class ArraySort {
    
    
	public static void main(String[] args) {
    
    
		int[] arr = {
    
     25, 24, 12, 76, 101, 96, 28 };
		for (int i = 0; i < arr.length - 1; i++) {
    
    
			// 定义内层循环
			for (int j = 0; j < arr.length - i - 1; j++) {
    
    
			// 比较相邻元素
				if (arr[j] > arr[j + 1]) {
    
     
					// 下面的三行代码用于交换两个元素
					int temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
	}
		}
		for (int i = 0; i < arr.length; i++) {
    
    
		 // 打印元素和空格
			System.out.print(arr[i] + " ");
		}
	}
}

六、原题及其解析

一.填空题
1.布尔常量即布尔类型的两个值,分别是()和()。 true false
解析:对应教材第32页,布尔类型变量用来存储布尔值,在Java中用boolean表示,该类型的变量只有两个值,即true和false

2.Java中的变量可分为两种数据类型,分别是()和()。 基本数据类型和引用数据类型
解析:对应教材30页,在Java中变量的数据类型分为两种:基本数据类型和引用数据类型。

3.在逻辑运算符中,运算符()和()用于表示逻辑与,()和()用于表示逻辑或。(1)& (2)&& (3)| (4)||
解析:对应教材第44页和45页,可从表2-9中得知&与 &&短路与 |或 ||短路或。

4.若"int a = 2;a+=3;“执行后,变量a的值为()。 5
解析: a+=3;这条语句相当于a=a+3;所以a=2+3,注意此=不是等于号,而是赋值号。在Java中,单个”=“表示赋值,两个"="表示相等。

5.若int[3][2]={ {123,345},{34,56},{34,56}},则a[2][1]=()。 56
解析:数组与常见数字序列不同,数组从"0"开始,常见的从"1"开始。因此a[2][1]是第三组第二个,也就是56。

二.判断题
1.Java语言不区分大小写。() ×错
解析:对应教材第26页,(2)Java语言是严格区分大小写的。

2.0xC5表示的是一个十六进制整数。() √对
解析:对应教材第41页,0xC5表示的是一个十六进制整数,此数转换为十进制整数的结果为197。

3.continue语句只用于循环语句中,它的作用是跳出循环。() ×错
解析:对应教材第63页,continue语句用在循环语句中,它的作用是终止本次循环,执行下一次循环。题中的描述显然是break。

4.”/* … * /“中可以嵌套”//“注释,但不能嵌套”/* . . . * /"注释。 () √对
解析:对应教材第27页,(1)多行注释中可以嵌套使用单行注释(2)多行注释中不能嵌套使用多行注释。

5.-5%3的运算结果是2。 ×错
解析: 取余运算时,最终结果的正负符号和%左边的数的正负符号一致。

三.选择题
1.以下选项中,哪些属于合法的标识符?(多选) ( ) AD
A.Hello_World B.class C.123username D.username123
解析:对应教材第28页和29页,B选项class是关键字不能作为标识符,C选项不能以数字开头。故选AD

2.以下关于变量的说法错误的是?() C
A.变量名必须是一个有效的标识符
B.变量在定义时可以没有初始值
C.变量一旦被定义,在程序中的任何位置都可以被访问
D.在程序中,可以将一个byte类型的值赋给一个int类型的变量,不需要特殊声明
解析:对应教材第36页,变量需要在它的作用范围内才可以被使用,这个作用范围被称为变量的作用域。

3.假设int x= 2,三元表达式x>0?x+1:5的运行结果是以下哪一个?() C
A.0 B.2 C.3 D.5
解析:对应教材第48页,? : 是三元运算符,其语法格式如下: (boolean_expr)?true_statement:false_statement。先对布尔类型表达式进行判断,如果正确就执行冒号左边的表达式,如果错误就执行冒号右边的表达式。
先对布尔类型表达式进行判断,也就是题中x>0,x=2所以x>0正确,故执行x+1,也就是2+1=3。

4.以下哪个选项可以正确创建一个长度为3的二维数组?( )B
A.new int[2][3]; B.new int[3][ ]; C.new int [ ][3];D.以上答案皆不对
解析:A选项创建了一个长度为2,每个数组的元素个数为3的二维数组
B选项创建了一个长度为3的二维数组
C选项创建的方式有误。

5.请先阅读下面的代码。

int x = 1;
		int y = 2;
		if(x%2==0) {
    
    
		y++;
		}else{
    
    
		y--;
		}
		System.out.println("y="+y);

上面一段程序运行结束时,变量y的值为下列哪一项?( ) A
A.1 B.2 C.3 D.0
解析:从第三行代码 if(x%2==0)开始分析,x对2进行取余,如果等于0,y自增1,如果不等于0,y自减1。
题中x=1,对2取余结果为1,所以执行else下的语句,也就是y–;y自减1,所以输出的y应为1,故选A。

四.简答题
1.请列举Java语言中的8种基本数据类型,并说明每种数据类型所占用的空间大小。
Java语言的八种基本数据类型有:byte字节型,占一个字节。short短整型,占两个字节。int整型,占4个字节。long长整型,占8个字节。float单精度浮点型,占4个字节。double双精度浮点型,占8个字节。char字符型,占两个字节。boolean型,表示逻辑值,有true和false两个值,分别占一个字节。
解析:略

2.简述&&与&的区别并举例说明。
如果使用“&”在表达式之间进行连接,那么无论任何情况,“&”两边的表达式都会参与计算。如果使用“&&”进行连接,当“&&”左边的表达式为false,则不会执行其右边的表达式。例如定义int x = 2,y = 0; boolean b = x < y & x / 2 > 0表达是会发生被0除异常,因为x / y的表达式执行了。而boolean b = x < y & x / 2 > 0是不会出现这种异常的,因为x < y为false,表达式x / y不会执行。
解析:略

3.简述跳转语句break和continue的作用和区别。
作用:break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
continue结束本次循环,继续下一次循环。
区别:break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循
环中剩余的语句。(break语句也在switch语句中使用)
continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行
下一次是否执行循环的判定。

解析:略

五.编程题
1.请编写程序,实现计算"1+3+5+7+…+99"的值。要求如下:
(1)使用循环语句实现自然数1-99的遍历
(2)在遍历过程中,通过条件判断当前遍历的数是否为奇数,如果是就累加,否则不加。

//创建一个类名为getSum的类
public class getSum {
    
    
//主函数
	public static void main(String[] args) {
    
    
	//定义sum为累加的总和,并定义初始值为0
		int sum = 0;
		//for循环,i初始值为1,最大取值为99,每次自增1
		for (int i = 1; i < 100; i++) {
    
    
		//每次都输出一次i的值,实现了对自然数1-99的遍历
		System.out.println("i="+i);
		//判断当前数是否为奇数,如果是就执行sum +=i;
			if (i % 2 != 0){
    
    
			//当数为奇数时,sum就累加。
				sum += i;
		}
		}
		//输出sum的值,也就是累加总和的值
		System.out.println(sum);
	}
}

解析:看注释,每一条语句都给了详细的注释。

2.请使用冒泡排序算法编写程序,实现对数组{25,24,12,76,101,96,28}的排序。

//定义一个类名为ArraySort的类
public class ArraySort {
    
    
//主函数
	public static void main(String[] args) {
    
    
	//定义数组
		int[] arr = {
    
     25, 24, 12, 76, 101, 96, 28 };
		//定义外层循环
		for (int i = 0; i < arr.length - 1; i++) {
    
    
			// 定义内层循环,由于冒泡排序每次都是将最大的数排到最右侧,最大的数已经排好了位置,
			//无需再排序,所以每次循环都要比上一次循环少比较一次,所以j<arr.length - i - 1
			for (int j = 0; j < arr.length - i - 1; j++) {
    
    
			// 比较相邻元素
				if (arr[j] > arr[j + 1]) {
    
     
					// 下面的三行代码用于交换两个元素
					int temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
	}
		}
		//定义for循环,对排序完成后的数组进行逐个输出。
		for (int i = 0; i < arr.length; i++) {
    
    
		// 打印元素和空格
			System.out.print(arr[i] + " "); 
		}
	}
}

解析:先看解析,看不懂对照教材第71页的例2-24 Example24.java进行理解。

猜你喜欢

转载自blog.csdn.net/hypertext123/article/details/109121348