文章目录
- 巩固题
- 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; // 星期102week %= 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 * 2int j = 2;
j = j * (j+1);// j *= j+1;
// 2 * 3int k = 2;
k = k * ++k; // k *= ++k;
// int k1 = ++k; k1=3,k=3
// 2 * 3System.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);//4System.out.println("j=" + j);//6System.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 000010008>>>3: 00000000 00000000 00000000 00000001*/System.out.println(a>>>b | 2);//3/*8的二进制:00000000 00000000 00000000 000010008>>>3: 00000000 00000000 00000000 000000012的二进制:00000000 00000000 00000000 00000010a>>>b | 2:00000000 00000000 00000000 00000011*/}
}
8、如何用最有效的的方法计算2乘以8
参考答案:乘以2的几次方,相当于左移几位
public class Homework8 {public static void main(String[] args) {System.out.println(2<<3);}
}