文章目录
- 巩固题
- 1、案例:今天是周2,100天以后是周几?
- 2、案例:求三个整数x,y,z中的最大值
- 3、案例:判断今年是否是闰年
- 4、分析如下代码的计算结果
- 5、分析如下代码的计算结果
- 6、分析如下代码的计算结果
- 7、分析如下代码的计算结果
- 8、如何用最有效的的方法计算2乘以8
巩固题
1、案例:今天是周2,100天以后是周几?
- 定义一个int类型变量week,赋值为2
- 修改week的值,在原值基础上加上100
- 修改week的值,在原值基础上模以7
- 输出结果,在输出结果的时候考虑特殊值,例如周日
参考答案:
public class Homework1 {
public static void main(String[] args) {
int week = 2;
week += 100; // 星期102
week %= 7;
System.out.println("今天是周2,100天以后是周" + (week == 0 ? "日" : week));
}
}
2、案例:求三个整数x,y,z中的最大值
- 定义三个int类型变量,x,y,z,随意赋值整数值
- 定义一个int类型变量max,先存储x与y中的最大值(使用三元运算符)
- 再次对max赋值,让它等于上面max与z中的最大值(使用三元运算符)
- 输出结果
参考答案:
public class Homework2 {
public static void main(String[] args) {
int x = 3;
int y = 4;
int z = 1;
int max = x > y ? x : y;
max = max > z ? max : z;
System.out.println(x + "," + y + "," + z + "中的最大值是:" + max);
}
}
3、案例:判断今年是否是闰年
- 定义一个int类型变量year,赋值为今年年份值
- 定一个一个boolean类型变量,用来保存这个年份是否是闰年的结果
- 输出结果
提示闰年的判断标准是:
1)年份year,可以被4整除,但不可以被100整除
2)或者,可以被400整除
参考答案:
public class Homework8 {
public static void main(String[] args) {
int year = 2022;
boolean result = year%4==0 && year%100!=0 || year%400==0;
System.out.println(year + "年" + (result ? "是闰年" : "不是闰年"));
}
}
4、分析如下代码的计算结果
int i = 1;
i = (int)(i * 0.2); // i *= 0.2;
i++;
System.out.println("i=" + i);
参考答案:
public class Homework4 {
public static void main(String[] args) {
int i = 1;
i *= 0.2;// i = (int)(i*0.2) = 0;
i++;
System.out.println("i=" + i);//1
}
}
5、分析如下代码的计算结果
int i = 2;
i = i * i++; // i *= i++;
// int i1 = i++; i1=2,i=3
// i = 2 * 2
int j = 2;
j = j * (j+1);// j *= j+1;
// 2 * 3
int k = 2;
k = k * ++k; // k *= ++k;
// int k1 = ++k; k1=3,k=3
// 2 * 3
System.out.println("i=" + i);
System.out.println("j=" + j);
System.out.println("k=" + k);
参考答案:
public class Homework5 {
public static void main(String[] args) {
int i = 2;
i *= i++;
/*
i = i * (i++);
=右边从左往右解析表达式
(1)取i的值2
(2)取i的值2
(3)i自增
(4)2*2=4
(5)i=4
*/
int j = 2;
j *= j+1;
/*
j = j * (j + 1 );
=右边从左往右解析表达式
(1)取j的值2
(2)取j的值2
(3)算j+1=3
(4)2*3=6
(5)j=6
*/
int k = 2;
k *= ++k;
/*
k = k * (++k);
=右边从左往右解析表达式
(1)取k的值2
(2)k自增
(3)取k的值3
(4)2*3=6
(5)k=6
*/
System.out.println("i=" + i);//4
System.out.println("j=" + j);//6
System.out.println("k=" + k);//6
}
}
6、分析如下代码的计算结果
int a = 3;
int b = 1;
System.out.println((a=b) ? "Equal" : "Not Equal");
参考答案:
public class Homework6 {
public static void main(String[] args) {
int a = 3;
int b = 1;
System.out.println((a=b) ? "Equal" : "Not Equal");
//编译报错,因为=是赋值运算,不是==比较运算,而a和b是int类型,a=b的结果是int类型,不能直接作为条件
}
}
7、分析如下代码的计算结果
int a = 8, b = 3;
System.out.println(a>>>b);//1
System.out.println(a>>>b | 2);//3
参考答案:
public class Homework7 {
public static void main(String[] args) {
int a = 8, b = 3;
System.out.println(a>>>b);//1
/*
8的二进制:00000000 00000000 00000000 00001000
8>>>3: 00000000 00000000 00000000 00000001
*/
System.out.println(a>>>b | 2);//3
/*
8的二进制:00000000 00000000 00000000 00001000
8>>>3: 00000000 00000000 00000000 00000001
2的二进制:00000000 00000000 00000000 00000010
a>>>b | 2:00000000 00000000 00000000 00000011
*/
}
}
8、如何用最有效的的方法计算2乘以8
参考答案:乘以2的几次方,相当于左移几位
public class Homework8 {
public static void main(String[] args) {
System.out.println(2<<3);
}
}