CoreJava-Day4

一、运算符的使用 以及底层补码的计算

1、int a=6--; 是否能输出a?

        false    6是常数,不能自减

2、分析以下代码的运行结果

fdb12854a61349e0bb715e4965e4373d.png

答案如下: 

System.out.println(5&9);//1
        /*
		* 全真为真,一假全假
		*
		* 5	0000 0101
		* 9 0000 1001
		*   0000 0001
		*/

System.out.println(5|9);//13
		/*
		* 全假为假,一真全真
		*
		* 5	0000 0101
		* 9 0000 1001
		*   0000 1101
		*/

System.out.println(5^9);//12
        /*
		* 相同为零,不同为一
		*
		* 5	0000 0101
		* 9 0000 1001
		*   0000 1100
		*/

System.out.println(~-5);//4
		/*
		* 按位取反(符号位也要变)
		*
		* 原码  1000 0101 
		* 反码  1111 1010
		* 补码  1111 1011
		*       0000 0100
		*/
        
System.out.println(5<<2);//20
		/*
		* 左移	右补0
		*
		* 5	0000 0101
		*   0001 0100
		*/
       
System.out.println(-5<<2);//-20
		/*
		* 左移	右补0
		*
		* 5:	0000 0101
		* -5:	1000 0101
		* 补码	1111 1011	反码+1
		* 		1110 1100
        * 原码	1001 0100	
		*/

System.out.println(-5>>2);//-2
		/*
		* 右移	正数  左补0
		*		负数  左补1
		*
		* 5:	0000 0000 0000 0000 0000 0000 0000 0101
        * -5:	1000 0000 0000 0000 0000 0000 0000 0101
		* 补码	1111 1111 1111 1111 1111 1111 1111 1011
		* 右移	1111 1111 1111 1111 1111 1111 1111 1110
		*    	1111 1111 1111 1111 1111 1111 1111 1101
        * 原码	1000 0000 0000 0000 0000 0000 0000 0010		
		*/
        
System.out.println(-5>>>2);//1073741822
		/*
		* 右移	正数和负数右移之后,最左边空出的位置,都要补0
		*
		* 5:	0000 0000 0000 0000 0000 0000 0000 0101
        * -5:	1000 0000 0000 0000 0000 0000 0000 0101
		* 补码	1111 1111 1111 1111 1111 1111 1111 1011
		* 右移	0011 1111 1111 1111 1111 1111 1111 1110
		*    	0100 0000 0000 0000 0000 0000 0000 0001 ----反码符号位不变
        * 原码	0100 0000 0000 0000 0000 0000 0000 0000	
		*/
        
System.out.println(5>>2);//1
		/*
		* 右移	正数  左补0
		*		负数  左补1
		*
		* 5:	0000 0000 0000 0000 0000 0000 0000 0101
		*		0000 0000 0000 0000 0000 0000 0000 0001
		*/

System.out.println(5>>34);//1
		/*
		* 右移	正数  左补0
		*		负数  左补1
		* 5:	0000 0000 0000 0000 0000 0000 0000 0101
		*	0000 0000 0000 0000 0000 0000 0000 0001

		*/
       
 
System.out.println(97=='a');
		/*
		* true
		*/

System.out.println(5.0==5);	
		/*
		* true
		*/
		
System.out.println(4>5 ^ 'c'>'a');
		/*
		* false^true = true
		*/
		
System.out.println((int)(char)(byte)-1);
		//补=反+1
		/*
		* -1:			1000 0000 0000 0000 0000 0000 0000 0001
		* 补码:		1111 1111 1111 1111 1111 1111 1111 1111
		* byte(-1):  1111 1111
		* 反码:		1111 1110 
		* 原码:		1000 0001	--- -1
		* char(-1):	1111 1111 1111 1111	------ 65535
		* int(65535)	0000 0000 0000 0000 1111 1111 1111 1111   ---- 65535
		*/

注意:3ecf34d594b5493688fb923b14028ce9.png

 二、流程控制

1.分析以下几段代码的输出结果

(1)

16fa92d17eff4ff5b43bb4f40b136166.png

答案如下:

1edae0549e604511b7fe6fe1d405849b.png 

(2)

d175fabedf504954819ebc856add44a7.png

答案如下:( 上述代码有误,修正后结果如下:)

 5ca0ef8d1e614fac92f63a5d0788b345.png

(3) 

7dde11c7068c491eba6c0cd1ba88a1b5.png

 答案如下:

a55e9bc1691f4bd8a25f0c11e1bbd432.png

 (4)

73f6ce0f576b49b9b91a1e6cb6f1a233.png

答案如下: (break语句的作用是终止当前循环语句的执行,然后执行当前循环后面的语句。(break只会出现在switch和循环语句中)(跳出循环))

a3ef255f67aa4204a70ddb18bd8c8644.png

(5) 

87d6c7d523804f129e9f31ebf917e16e.png

答案如下 :

4c1134954fd24253845cc5c69814fcfb.png(6) 

eb8ff12d901142ed9997f6b050e815da.png

答案如下: 

2982a744188e4044989c92e4c61b2994.png

(7) 

0cc2603d5042468d88597bd6d29da168.png

答案如下:(continue语句的作用是强制循环提前返回,也就是让循环跳过本次循环中的剩余代码,然后开始下一次循环。(continue只会出现在循环语句中)) 

862165342ae640588653d75e37f62e21.png

(8) 

3b704c18e92e4f1f82c9cd8ddfbbcee7.png

答案如下:(return语句的作用是结束当前方法的执行,并退出返回到调用该方法的语句处。(直接跳出方法)) 

b9ad21517a0841f2951354beb7fef7f4.png

2.编写代码实现如下效果的九九乘法表 

9f2c059f98274e428a7c5cfdb2d564d5.png

public class Math_乘法表 {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(i + "*" + j + "=" + i * j +" ");
            }
            System.out.println();
        }
    }
}

3. 判断101-200之间有多少个素数,并输出所有素数。(只能被1和它本身整除的自然数为素数)

代码如下:

public class Math_判断素数 {
    /**
     * 判断101-200之间有多少个素数,并输出所有素数。(只能被1和它本身整除的自然数为素数)
     */
    public static void main(String[] args) {
        int count = 0;
        for (int i = 101; i <= 200; i++) {//循环101~200的数字
            boolean flag = true;
            for (int j = 2; j < i; j++) {//注意要从j要从2开始
                if (i % j == 0) {//证明j到i之间有其他数字,i能整除
                    flag = false;
                    break;//跳出当前循环
                }
            }
            if (flag) {
                System.out.println(i + "为素数");
                count++;
            }
            
        }
        System.out.println("素数的个数为:" + count);

    }

}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新生代程序“猿”

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值