A:选择题
- 给出以下代码,请问表达式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天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(month+"月:30天");
break;
case 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+"较大!");
}
}