黑马程序员技术交流社区

标题: 毕向东老师这里面有一个小小的错误,谁能给指出来! [打印本页]

作者: ︶ㄣ你眼中的倒    时间: 2014-8-24 08:41
标题: 毕向东老师这里面有一个小小的错误,谁能给指出来!

public class Test1{
        public static void main(String[] args)
        {

                int x  = 7;

                //逻辑运算符用于连接boolean类型的表达式。

                //x>3 & x<6 = true & true = true;
                /*
                true & true = true;
                true & false = false;
                false & true = false;
                false & false = false;

                & : 只要两边的boolean表达式结果,有一个为false。那么结果就是false。
                        只有两边都为true,结果为true。
                */
                /*
                true | true = true;
                true | false = true;
                false | true = true;
                false | false = false;
                | : 两边只要有一个为true,结果为true。
                        只有两边都有false,结果为false。
                */

                /*
                ^ : 异或;就是和|有点不一样。当true ^ true = false;
                true ^ true = false;
                true ^ false = true;
                false ^ true = true;
                false ^ false = false;
                ^ : 两边相同结果是false。
                        两边不同结果是true。

                */

                /*
                !!true
                */

               
                int a = 2;

                //a>3 && a<6;

                /*
                &和&&的特点:
                &:无论左边是true是false。右边都运算。
                &&:当左边为false时,右边不运算。


                |:两边都参与运算。
                ||:当左边为true。右边不运算。
                */



                System.out.println(false ^ false);
                System.out.println(~6);


                int n = 3,m = 8;
                System.out.println("n="+n+",m="+m);
               
                //1,通过第三方变量。
                /*int temp;
                temp = n;
                n = m;
                m = temp;
                */

                //2不用第三方变量。
                //11 = 3 +  8;

                //3 = 11 - 8;
                //8 = 11 - 3;
                /*
                n = n + m;//如果n和m的值非常大,容易超出int范围。
                m = n - m;
                n = n - m;
                */

                n = n ^ m;

                m = n ^ m;//(n^m)^m;

                n = n^m;//n ^ (n ^ m)

                System.out.println("n="+n+",m="+m);
        }
}
作者: 潘多拉    时间: 2014-8-24 09:11
好像没错误吧,你是不是文件名和类名不一样啊,公共类要有自己的文件
作者: ︶ㄣ你眼中的倒    时间: 2014-8-24 09:15
潘多拉 发表于 2014-8-24 09:11
好像没错误吧,你是不是文件名和类名不一样啊,公共类要有自己的文件

  n = n^m;//n ^ (n ^ m)

这个他的运行结果和解释不一样!
作者: 潘多拉    时间: 2014-8-24 09:30
一样啊,括号里的是上一个表达式求出来的m呀,你看运行结果不都正确的么
作者: ︶ㄣ你眼中的倒    时间: 2014-8-24 09:34
潘多拉 发表于 2014-8-24 09:30
一样啊,括号里的是上一个表达式求出来的m呀,你看运行结果不都正确的么

为什么把后面他解释的赋给n运行就不正确了!
作者: 潘多拉    时间: 2014-8-24 09:39
那肯定啊,括号里边m的值是按照上面算完后的结果
作者: ︶ㄣ你眼中的倒    时间: 2014-8-24 09:43
潘多拉 发表于 2014-8-24 09:39
那肯定啊,括号里边m的值是按照上面算完后的结果

我知道啊!
n=n^(n^m);可以写成这样吗?
作者: 陈永赛    时间: 2014-8-24 13:57
︶ㄣ你眼中的倒 发表于 2014-8-24 09:43
我知道啊!
n=n^(n^m);可以写成这样吗?

没有错呀,//n ^ (n ^ m)这前面不是有注释符的嘛···这样写只是解释给你听,n为什么等于n^m
作者: wwfkofufo    时间: 2014-8-24 18:10
楼主,学坏了。。。
作者: 宿小帥    时间: 2014-8-24 18:19
int x=7;
//x>3 & x<6 = true & true = true;
你是“x<6”打错了还是?
作者: 孙雯    时间: 2014-8-24 21:54
陷坑里面了,一步一步自己写出来就明白了O(∩_∩)O~
作者: ︶ㄣ你眼中的倒    时间: 2014-8-25 13:08
wwfkofufo 发表于 2014-8-24 18:10
楼主,学坏了。。。

哎,学得脑淤血差点给犯了!!!
作者: 小乖乖灬浩歌    时间: 2014-8-27 22:00
陈永赛 发表于 2014-8-24 13:57
没有错呀,//n ^ (n ^ m)这前面不是有注释符的嘛···这样写只是解释给你听,n为什么等于n^m ...

正解  这是个动态的过程




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2