《Java基础⼊门第2版》--⿊马程序员课后答案及其详解第2章Java编程基础⽂章⽬录
⼀、填空题
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 语句⽤在循环语句体中,⽤于终⽌某次循环过程,即跳过循环体中尚未执⾏的语句,接着进⾏
下⼀次是否执⾏循环的判定。
五、编程题
1.
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);
}
}
java入门课件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。
解析:对应教材第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
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进⾏理解。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论