java学习第03天--作业


简答
简述短路与(&&),短路或(||)的含义?
 答:左侧能决定整个表达式值的时候,右侧表达式不进行运算
&&:左侧为false,右侧不执行
||:左侧为true,右侧不执行

选择
1.下面哪两个表达式结果相同
A   (2 << 1) * (8 >> 2)  
B   (8 >> 2) << 4       
C   2 << 5              
D   128 >>> 2           
 答:B、D

2. int a = 4;以下哪两个语句输出结果相同
A   System.out.print(++a);   5
B   System.out.print(a++);   4
C   System.out.print(--a);   3
D   System.out.print(a--);   4
 答: B、D

3. int a = 8,b = 4;
    以下哪些是合法的?
A   (a + b) & (a - b);
B   (a > b) & (a > 0);
C   (a + b) & (a > b);
D   (a * b) & (a + 0);
答: A、B 、D
a + b 为int型, a > b为boolean型

4.若声明
    byte b;short s;char ch;float f;
以下哪一个是合法的?
A   ch = 97; s = ch;
B   s = 97; ch = s;
C   ch = 97; b = ch;
D   b = 97; ch = b;
E   ch = 97; f = ch;
 答:F
 
5.
若有如下定义:
    int a = 100;
    int b = -100;
    int c = 1;
    int d = -1;
以下哪些是合法的?(主要考察位运算符)
A   a/~b
B   b/~c
C   c/~d
D   d/~a
答:A、B、D 

6.如下程序执行的结果是?
class Test{
    public static void main(String[] args){
       int x =10;
       double y = 10.1;
       boolean z = (y = x);
       System.out.println(z);
    }
}
A   true
B   false
C   编译出错
D   10
 
7.如下程序的运行结果是
class Test{
    public static void main(String[] args){
       int x = 0x80000000;
       System.out.print(x+" and ");
       x = x >>> 31;
       System.out.println(x);
    }
}
 
A   -2147483648 and 1
B   0x80000000 and 0x00000001
C   -2147483648 and -1
D   以上都不对
 
8.以下程序结果是
class BitWise{
    public static void main(String[] args){
       int x = 11 & 9;
       int y = x ^ 3;
       System.out.println(y | 2);
    }
}
A   10
B   7
C   8
D   14
 
9.以下哪些是正确的?
A   int a = (int)12.3;
B   byte b = (byte)1234L;
C   long lo = (byte)1234;
D   byte b = (short)1234L;
 
10.以下程序运行结果是
class Test{
    public static void main(String[] args){
       boolean b1 = true;
       boolean b2 = false;
       boolean b3 = true;
       if(b1 & b2 | b2 & b3 | b2){ //&的优先级高于|
           System.out.println("first");
       }
       if(b1 & b2 | b2 & b3 | b2 | b1){
           System.out.println("second");
       }
    }
}
A   first
B   second
C   first
    second
D   编译出错

&与|的优先级比较:
java学习第03天--作业
 

11.以下程序运行结果是
public class Test {
    public static void main(String[] args) {
       int x = 0;
       int y = 0;
       for (int z = 0; z < 5; z++) {
           if ((++x > 2) || (++y > 2)) {
              x++;
           }
       }
       System.out.println(x + " " + y);
    }
}
 
A   5 3
B   8 2
C   8 3
D   10 3
 
12.以下程序运行结果是
public class Test {
    public static void main(String[] args) {
       int x = 0;
       int y = 0;
       for (int z = 0; z < 5; z++) {
           if ((++x > 2) && (++y > 2)) {
              x++;
           }
       }
       System.out.println(x + " " + y);
    }
}
A   5 2
B   5 3
C   6 2
D   6 3
E   8 2
F   8 3
 
13.以下哪些可以通过编译
A   float f = 53; int i = 27; if(f <> i){}
B   double d = -10.5; d = d % 2;
C   int i = -2; i = i > 0 ? true:false;
D   int i = 256; i = i >> 2;
 答: A、B、D
 
14.System.out.println(5 ^ 3);结果是
A   0
B   1
C   6
D   7
答:

15.有如下代码
String str = "hello";
int i = 1;
以下可以和上述代码搭配的是?
A   String s = str >> 1;
B   long x = 12L;
    str = str + x;
C   以上都不对
答:

16.以下程序的结果是:
class Test{
    public static void main(String[] args){
       int a = 5;
       System.out.println( (a>5)? 10.1 : 9 );
    }
}
A   编译错误
B   10.1
C   9
D   以上都不对
答:D
正确答案是9.0
 
17.
下面语句的输出结果是:
int i = 012;
int j = 034;
int k = (int)056L;
int l = 078;
System.out.println(i);
System.out.println(j);
System.out.println(k);
 
A   分行输出12,34,56
B   int k = (int)056L;编译出错
C   int l = 078;编译出错
D   输出10,28,46
答:
 
18.以下程序运行结果是
public class Test {
    public static void main(String[] args) {
       int i = 10;
       if(i = 10){
           System.out.println("i = "+ i);
       }
       else if(i = 5){
           System.out.println("i = " + i);
       }
    }
}
A   i = 10
B   i = 5
C   编译报错
答:C
 
19.
class Test{
    public static void main(String[] args){
       xxxxxxx
           System.out.println("x = " + x);
       }
    }
}
以上程序若想输出以下结果,
x = 0
x = 1
xxxxxxx应该替换成:(多选)
A   for(int x = 0;x <= 1; x++){
B   for(int x = 0;x <=   2; x++){
C   for(int x = 0;x < 2; x++){
D   for(int x = 0;x < 2; ++x){
答: A、C、D
 
 
编程
1.从键盘录入年龄,根据年龄给出提示:
35岁以下显示“青年”;
35-45岁显示“中年”;
46-75岁显示“老年”;
3.改进前面的程序,增加对非法年龄(负数,超过120)的处理

答:
1.从键盘录入年龄,根据年龄给出提示:
35岁以下显示“青年”;
35-45岁显示“中年”;
46-75岁显示“老年”;
改进前面的程序,增加对非法年龄(负数,超过120)的处理
 import java.util.Scanner;

public class Age{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入年龄:");
int age = sc.nextInt();
if(age <=0 || age >= 120){
System.out.println("您输入的年龄有误");
}else if(age < 35){
System.out.println("青年");
}else if(age >= 35 && age <= 45){
System.out.println("中年");
}else if(age >= 46 && age <= 75){
System.out.println("老年");
}else{
System.out.println("您输入的年龄有误。");
}
}
}
 
2、两种方式实现对两个整数变量的值进行互换.
java学习第03天--作业
 3、从键盘输入三个数,显示其中的最大值,要求使用if-else和三元运算符两种方式实现
import java.util.Scanner;

public class Age{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("请输入第一个整数:");
int i = sc.nextInt();
System.out.print("请输入第二个整数:");
int j = sc.nextInt();
System.out.print("请输入第三个整数:");
int k = sc.nextInt();
//方法一:使用三元运算符
// int max = i>j?(i>k?i:k):(j>k?j:k);
// System.out.println("经检测,您输入的最大整数是max = "+max);
//方法二:使用三元运算符
// int res = i>j?i:j;
// int max = res>k?res:k;
// System.out.println("经检测,您输入的最大整数是max = "+max);
//方法三:使用if else语句
/*
if(i > j && i >k){
System.out.println("经检测,您输入的最大整数是:" + i);
}else if(j > i && j > k){
System.out.println("经检测,您输入的最大整数是:" + j);
}else{
System.out.println("经检测,您输入的最大整数是:" + k);
}
*/
//方法四:使用if - else语句
if(i > j){
if(i > k){
System.out.println("经检测,您输入的最大整数是:" + i);
}else{
System.out.println("经检测,您输入的最大整数是:" + k);
}
}else{
if(j >k){
System.out.println("经检测,您输入的最大整数是:" + j);
}else{
System.out.println("经检测,您输入的最大整数是:" + k);
}
}
}
}