Java基础-&&和&、if和switch、==和=、>>位运算、for循环

A:选择题

  1. 给出以下代码,请问表达式grade==70在以下两条语句中是否获得执行?
boolean flag = false && grade == 70;//第一条语句
boolean flag = false & grade == 70;//第二条语句

A. 语句1、2中均可获得执行
B. 语句1、2中均未获得执行
C. 语句1中获得执行,语句2中未获得执行
D.语句2中获得执行,语句1中未获得执行

解:C 语句一短路 赋值运算返回右边的false值

B:简答题

1、 请说明 && 和 & 的区别?

&&满足短路 左边为假则返回false,右边不执行
&两边都执行,之后再进行与判断

2、 请说明 == 与 = 的区别?

==是判断 返回布尔型0或1
=是赋值 返回赋值号右边的值

3、 三元运算符的基本格式是什么?执行流程是什么?

表达式1?表达式2:表达式3;

先执行表达式1,为真则执行2,为假执行3

4、 使用键盘录入数据的三个步骤是什么?

i. 导入java.util.Scanner包
ii. 创建Scanner对象
iii. 创建变量接收 调用该对象的录入函数后所录入的值

C:看程序写结果(写出自己的分析理由),程序填空,改错,看程序写结果。

1、写出下面程序运行的结果
int x = 1,y = 1;
if(x++==2 & ++y==2)  
{
	x =7;
}
// 解:x=2,y=2
System.out.println("x="+x+",y="+y); 

右自增使用时,是现从内存中取出当前的值参与运算,之后才自增,
于是先执行了x==2,结果为false,之后x才自增为2;
&不断路,执行右边,左自增则是直接自增再参与运算,结果为ture

2、写出下面程序运行的结果
int x = 1,y = 1;
if(x++==2 && ++y==2)
{
	x =7;
}
System.out.println("x="+x+",y="+y);

解:x=2,y=1 短路

3、写出下面程序运行的结果
int x = 1,y = 1;
if(x++==1 | ++y==1)
{
	x =7;
}
System.out.println("x="+x+",y="+y);

解:x=7,y=2 x内存为1,x==1为真,| 结果为真

4、写出下面程序运行的结果
int x = 1,y = 1;
if(x++==1 || ++y==1)
{
	x =7;
}
System.out.println("x="+x+",y="+y);

解:x=7,y=1 短路

5、写出下面程序运行的结果
boolean b = true;
if(b=false)  
	System.out.println("a");
else if(b)
	System.out.println("b");
else if(!b)
	System.out.println("c");
else
	System.out.println("d");

解:c 第一个if被赋值false并返回false

6、写出下面程序运行的结果
int x = 2,y=3;
switch(x)
{
	default:
		y++;
	case 3:
		y++;
		break;
	case 4:
		y++;
}
System.out.println("y="+y);

解:y=5
执行了default、case 3

7、写出下面程序运行的结果
int num = 10;
boolean b1 = false;
if( (b1==true) && ( (num+=10) == 20) ){
System.out.println("We are equal" + num);
} else {
System.out.println("Not equal!" + num);
}

解:Not equal!10 短路

8、写出下面程序运行的结果
byte x = -32;
byte y = (byte)(x>>2);
System.out.println(y);

解:-8
-32:   原 1010 0000
          补  1110 0000
右移2位  1111 1000
-1、取反 10001000
-----------------------------------
即-8
公式 -32/2^=-8

9、写出下面程序运行的结果
byte x = 127;
byte y = (byte)(x>>9);
System.out.println(y);

解:0
127为正数,原反补码相同,符号位为零,右移补九次零,有效位全是零

10、写出下面程序运行的结果
int num = 0;
switch(num) {
default:
System.out.println("Default");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
case 3:
System.out.println("3");
}

解:
Default
1
2
3

D:编程题

1、考试成绩分等级,请根据键盘输入的成绩,输出对应的等级。

90~100 A等。
80-89 B等。
70-79 C等。
60-69 D等。
60以下 E等。

public class test {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入你的成绩:");
    int score = sc.nextInt();
        if (score >=90) {
            System.out.println("A等。");
        }
        else if (score >=80) {
            System.out.println("B等。");
        }
        else if (score >=70) {
            System.out.println("C等。");
        }
        else if (score >=60) {
            System.out.println("D等。");
        }
        else{
            System.out.println("E等。");
        }
        
    }
}
2、请根据键盘输入的月份,打印出对应月份的天数。

1月: 31天
2月: 28天
3月: 31天
4月: 30天
5月: 31天
6月: 30天
7月: 31天
8月: 31天
9月: 30天
10月: 31天
11月: 30天
12月: 31天

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输月份:");
    int month = sc.nextInt();
    switch(month){
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            System.out.println(month+"月:31天");
	   breakcase 4:
        case 6:
        case 9:
        case 11:
            System.out.println(month+"月:30天");
	   breakcase 2:
            System.out.println(month+"月:28天");
            break}

    }
}
3、 对两个整数变量的值进行互换。

提示:
第一种:使用第三方变量

public class test {
    public static void main(String[] args) {
    //Scanner sc = new Scanner(System.in);
    //System.out.println("请输入你的成绩:");
    //int score = sc.nextInt();
    int a=3,b=5;
    System.out.println("a:"+a+" b:"+b);
    int c;
    c=a;
    a=b;
    b=c;
    System.out.println("a:"+a+" b:"+b);

    }

第二种:不需要第三方变量,思考下异或运算符的特点.

public class test {
    public static void main(String[] args) {
    //Scanner sc = new Scanner(System.in);
    //System.out.println("请输入你的成绩:");
    //int score = sc.nextInt();
    int a=3,b=5;
    System.out.println("a:"+a+" b:"+b);
    a=a^b;
    b=a^b;
    a=a^b;
    System.out.println("a:"+a+" b:"+b);

    }
4、使用三元运算符完成如下练习(数据来自于键盘录入)

比较两个数是否相等

import java.util.Scanner;
public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入两个数字:");
        int m = sc.nextInt();
        int n = sc.nextInt();
        int i=0 ;
        i=((m==n)?1:0);
        if(i==1){
            System.out.println("相等");
        }
        else {
            System.out.println("不相等");
        }
    }
}

获取两个数中最大值

import java.util.Scanner;
public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入两个数字:");
        int m = sc.nextInt();
        int n = sc.nextInt();
        int i=0 ;
        i=((m>n)?m:n);
        System.out.println(i+"较大!");
    }
}

获取三个数中最大值

import java.util.Scanner;
public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入3个数字:");
        int m = sc.nextInt();
        int n = sc.nextInt();
        int x = sc.nextInt();
        int i=0 ;
        i=((m>n)?m:n)>x?((m>n)?m:n):x;
        System.out.println(i+"较大!");
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值