A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


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

12 个回复

正序浏览
陈永赛 发表于 2014-8-24 13:57
没有错呀,//n ^ (n ^ m)这前面不是有注释符的嘛···这样写只是解释给你听,n为什么等于n^m ...

正解  这是个动态的过程
回复 使用道具 举报
wwfkofufo 发表于 2014-8-24 18:10
楼主,学坏了。。。

哎,学得脑淤血差点给犯了!!!
回复 使用道具 举报
陷坑里面了,一步一步自己写出来就明白了O(∩_∩)O~
回复 使用道具 举报
int x=7;
//x>3 & x<6 = true & true = true;
你是“x<6”打错了还是?
回复 使用道具 举报
楼主,学坏了。。。
回复 使用道具 举报
︶ㄣ你眼中的倒 发表于 2014-8-24 09:43
我知道啊!
n=n^(n^m);可以写成这样吗?

没有错呀,//n ^ (n ^ m)这前面不是有注释符的嘛···这样写只是解释给你听,n为什么等于n^m
回复 使用道具 举报
潘多拉 发表于 2014-8-24 09:39
那肯定啊,括号里边m的值是按照上面算完后的结果

我知道啊!
n=n^(n^m);可以写成这样吗?
回复 使用道具 举报
那肯定啊,括号里边m的值是按照上面算完后的结果
回复 使用道具 举报
潘多拉 发表于 2014-8-24 09:30
一样啊,括号里的是上一个表达式求出来的m呀,你看运行结果不都正确的么

为什么把后面他解释的赋给n运行就不正确了!
回复 使用道具 举报
一样啊,括号里的是上一个表达式求出来的m呀,你看运行结果不都正确的么
回复 使用道具 举报
潘多拉 发表于 2014-8-24 09:11
好像没错误吧,你是不是文件名和类名不一样啊,公共类要有自己的文件

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

这个他的运行结果和解释不一样!
回复 使用道具 举报
好像没错误吧,你是不是文件名和类名不一样啊,公共类要有自己的文件
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马