Java程序设计基础课后习题参考答案
第2章
1. 关于Java Application 的入口方法main()的检验:
main()方法的参数名是否可以改变?
main()方法的参数个数是否可以改变?
该方法名是否可以改变?
参考答案:(1)main()方法的参数名可以改变。(2)main()方法的参数个数不可以改变。(3)该方法名不可以改变。
2. 当一个程序没有main()方法时,能编译吗?如果能编译,能运行吗?
参考答案:当一个程序没有main()方法是,是可以编译通过的,但是不能给运行,因为不到一个主函数入口。
3. 下列语句能否编译通过?
byte i = 127;
byte j = 128;
long l1 = 999999;
long l2 = 9999999999;
参考答案:byte i 和 long l1可以编译通过。而 byte j 和long l2 超出自身数据类型范围,所以编译失败。
4. 下列语句能否编译通过?
float f1 = 3.5;
float f2 = 3.5f;
参考答案:java中浮点型的数据在不声明的情况下都是double型的,如果要表示一个数据
是float型的,必须在数据后面加上“F”或“f”;因此,float f1 无法编译通过。
5. 验证int 和char,int和double等类型是否可以相互转换。
参考答案:(1)char类型可以转换为int 类型的,但是int类型无法转换为char类型的;(2)int 可以转换为 double类型的,但是double类型无法转换为int 类型的。
6. 计算下列表达式,注意观察运算符优先级规则。若有表达式是非法表达式,则指出不合法之处且进行解释。
(1) 4+5 == 6*2 (2) (4=5)/6
(3) 9%2*7/3>17 (4) (4+5)<=6/3
(5) 4+5%3!=7-2 (6) 4+5/6>=10%2
参考答案:表达式(2)为不合法表达式,只能将值赋值给一个变量,因此其中(4=5)将5赋值给4是不合法的。
7. 下列()是合法的Java标识符。
(1) Counter1 (2) $index,
(3) name-7 (4) _byte
(5) larray (6) 2i
(7) try (8) integer
参考答案:Java标识符由数字,字母和下划线(_),美元符号($)组成。在Java中是区分大小写的。而且还要求首位不能是数字。最重要的是,Java关键字不能当作Java标识符。因此,(1)、(4)、(5)、(8)是合法标识符。
8. 下列各项中定义变量及赋值不正确的是()
(1) int I = 32;
(2) float f = 45.0;
(3) double d = 45.0;
参考答案:(2)不正确,选项(2)定义 float 类型时必须在数据后面加上“F”或“f”。
9. Java语言中,整型常数123占用的存储字节数是()
(1) 1 (2) 2 (3) 4 (4) 8
参考答案:正确选项是(3), Java语言中,默认整型数占用4个字节数。
10. 以下代码的编译运行结果是
public class Test{
public static void main(String[] args){
int age;
age = age + 1;
System.out.println(“the age is “ + age);
}
}
(1)编译通过,运行无输出
(2)编译通过,运行结果为 “the age is 1”
(3) 编译通过但运行时出错
(4)不能通过编译
参考答案:(4)为正确选项。Java 在使用变量前应该先初始化。
11. 写出下列表达式的运行结果
(1) 6+3<2+7 (2) 4%2+4*3/2
(3) (1+3)*2+12/3 (4) 8>3&&6==6&&12<4
(5)7+12<4&&12-4<8 (6) 23>>2
参考答案:(1) false;(2) 6;(3) 12; (4) fale;(5) false;(6) 5;
第3章
1. 编码验证i++和++i的区别。
参考答案:++i 和 i++在单独使用时, 就是 i=i+1。而 a = ++i, 相当于 i=i+1; a = i; (先 i = i + 1,再使用 i 的值),而 a = i++,相当于 a = i; i=i+1; (先使用 i 的值,再 i = i + 1)。
2. 写出下面表达式的结果
(1)5/3
(2)5/3.0
(3)5%3
(4)5%-3
参考答案:
(1)1
(2)1.6666666666666667
(3)2
(4)2
3. 考虑如下的Test.java,并指出错误原因。
程序清单:Test.java
class Test {
public static void main(String[] args) {
byte b = 5;
b = (b – 2);
System.out.println(b);
}
}
参考答案:b=(b-2);错误,在进行b-2时,运算结果类自动提升为int,而b是byte类型,编译的时候会报错,因为存在高类型数据向低类型数据转化的风险。而byte b=5;是正确的,因为在编译的时候就能够确定5在byte允许的范围内,虚拟机在编译时做了一定的优化处理。
4. 考虑一下对于if……else……语句,还有没有更简洁的写法。
例如:if( x > 0 ) {
y = x;
} else {
y = -x;
}
可以简写成什么?
参考答案:y=x>0?x:-x;
5. 给定N,编程实现打印N*N的乘法表。
参考答案:
public static void main(String[] args){
int a = 0, b = 0, c = 0;
for(int i=0; i<9; i++) {
a=i+1;
for(int j=0;j<i+1;j++) {
b = j+1;
c = a*b;
System.out.print(a + "*" + b + "=" + c + " ");
}
System.out.println(" ");
}
}
6. 将下列语句转换成Java代码:
(1)如果b1为真,打印“one”,否则打印“two”。
(2)如果b1为假并且b2为真,打印“one”,否则打印“two”。
(3)如果b1为假,并且如果b2为真则打印“one”,如果b2为假则打印“two”;否则打印“three”。
参考答案:(1) if(b1=true) {
System.out.print("one");
} else {
System.out.print("two");
}
(2)if(b1=false && b2 =true) {
System.out.print("one");
} else {
System.out.print("two");
}
(3)if(b1=false && b2 =true) {
System.out.print("one");
} else if (b1=false && b2 =false){
System.out.print("two");
} else {
System.out.print("three");
}
7. 出如下各项中的语法错误:
(1)
for(int k=0;k<100;k++)
System.out.println(k)
(2)
for(int k=0;k<100;k++);
System.out.println(k);
(3)
int k=0
while k<100 {
System.out.println(k);k++
};
(4)
int k=0;
do{
System.out.println(k);
k++;
} while k<100;
参考答案:
令数组全部的值为0(1)for(int k=0;k<100;k++) {
System.out.println(k);
}
(2)for(int k=0;k<100;k++) {
System.out.println(k);
}
(3)int k=0;
while (k<100 ){
System.out.println(k);
k++;
}
(4)int k=0;
do{
System.out.println(k);
k++;
} while (k<100);
8. 写出三个不同的循环―for、while和do-while循环,打印出从0(包括0)开始直到1000的所有10的倍数。
参考答案:
(1) int n=0;
while(n<=1000 && n%10==0) {
System.out.print(n);
n++;
}
(2)
int n=0
do{
if(n%10==0){
System.out.print(n);
}
n++;
}while(n<1000);
(3)
for(int n=0;n<=1000;n++){
if(n%10==0) {
system.out.print(n);
}
9. 给定N,编程实现打印行数为N的菱形。
参考答案:
public static void main(String[] args) {
Scanner read = new Scanner(System.in);
int n;
while (true) {
System.out.println("输入一个整数(>=0)");
if (read.hasNextInt()) {
n = Int();
if (n < 0)
continue;
break;
} else {
();
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论