Day02-课后练习2-参考答案(数据类型和运算符)

文章目录

  • 巩固题
    • 1、案例:今天是周2,100天以后是周几?
    • 2、案例:求三个整数x,y,z中的最大值
    • 3、案例:判断今年是否是闰年
    • 4、分析如下代码的计算结果
    • 5、分析如下代码的计算结果
    • 6、分析如下代码的计算结果
    • 7、分析如下代码的计算结果
    • 8、如何用最有效的的方法计算2乘以8

巩固题

1、案例:今天是周2,100天以后是周几?

  1. 定义一个int类型变量week,赋值为2
  2. 修改week的值,在原值基础上加上100
  3. 修改week的值,在原值基础上模以7
  4. 输出结果,在输出结果的时候考虑特殊值,例如周日

在这里插入图片描述

参考答案:

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中的最大值

  1. 定义三个int类型变量,x,y,z,随意赋值整数值
  2. 定义一个int类型变量max,先存储x与y中的最大值(使用三元运算符)
  3. 再次对max赋值,让它等于上面max与z中的最大值(使用三元运算符)
  4. 输出结果

在这里插入图片描述

参考答案:

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、案例:判断今年是否是闰年

  1. 定义一个int类型变量year,赋值为今年年份值
  2. 定一个一个boolean类型变量,用来保存这个年份是否是闰年的结果
  3. 输出结果

提示闰年的判断标准是:

​ 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);
    }
}

你可能感兴趣的:(JavaSE知识讲解和课后练习,java,开发语言,数据类型和运算符课后练习答案)