您的位置:首页 > 编程语言 > Java开发

java学习日志5—与和或,一个你经常用到但是却不了解的符号

2013-11-21 14:54 543 查看
当我们要同时判断多个逻辑运算的时候,就会用到:逻辑运算符

“&&”:运算符前后的操作返回结果都为真,结果为真
“||”:运算符前后的操作返回结果只要有一个为真,结果为真

我们通过代码来看

public class Test
{
      public static void main (String
args[]){
[align=left]           [/align]
[align=left]            boolean a= true;                                  //定义boolean变量a为true[/align]
[align=left]            boolean b= false;                                 //定义boolean变量b为true[/align]
           
[align=left]           System. out.println( "a&&b="+(a&&b));         //与操作[/align]
[align=left]           System. out.println( "a&b="+(a&b));           //与操作[/align]
[align=left]           System. out.println( "a||b="+(a||b));         //或操作[/align]
[align=left]           System. out.println( "a|b="+(a|b));           //或操作[/align]
[align=left]     }[/align]
[align=left]     [/align]
[align=left]}[/align]

[align=left]
[/align]
[align=left]返回结果:[/align]
[align=left]
[/align]
[align=left]     a&&b=false[/align]
[align=left]     a&b=false[/align]
[align=left]     a||b=true[/align]
[align=left]     a|b=true[/align]
[align=left]
[/align]
[align=left]从上面可以看出与和或的区别,下面我们通过详细的例子来看下与(&)和短路与(&&),或(|)和短路或(||)的差别[/align]
[align=left]
[/align]

[align=left]public class Test {[/align]
      public static void main
(String args[]){
[align=left]            //用具体的实例看起来更直观[/align]
[align=left]            /*[/align]
[align=left]            * 这里a可以正确的被执行[/align]
[align=left]            * 而b不行(被除数为0)[/align]
[align=left]            * 正常的情况下b应该会报错[/align]
[align=left]            */[/align]
[align=left]            int a=5/1;                       //定义正确的变量[/align]
[align=left]            int b=5/0;                       //定义错误的变量[/align]
[align=left]           [/align]
[align=left]           System. out.println(a);[/align]
[align=left]           System. out.println(b);[/align]
[align=left]     }[/align]
[align=left]     [/align]
[align=left]}[/align]
[align=left]     [/align]
[align=left]返回结果:[/align]
[align=left]
[/align]

Exception in thread "main" java.lang.ArithmeticException :
/ by zero
[align=left]     at test.Test.main( Test.java:17 )[/align]
[align=left]
[/align]
[align=left]通过结果来看,我们的推理是正确的[/align]
[align=left]
[/align]
[align=left]现在我们先加入“&&”、“&”来看下它们之间的区别[/align]
[align=left]
[/align]
[align=left]1.测试&&[/align]
[align=left]
[/align]

public class Test
{
[align=left]      @SuppressWarnings( "unused")[/align]
      public static void main
(String args[]){
[align=left]           [/align]
[align=left]            //因为加入&&和&运算符,我们假设两个错误的值[/align]
            if ( 5!=5&&5/0==0)
{
[align=left]                System. out.println( "正确" );[/align]
[align=left]           }[/align]
[align=left]           [/align]
[align=left]     }[/align]
[align=left]}[/align]
[align=left]
[/align]
[align=left]执行结果:[/align]
[align=left]
[/align]

Exception in thread "main" java.lang.ArithmeticException :
/ by zero
[align=left]     at test.Test.main( Test.java:16 )[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]出现被除数是0的错误[/align]
[align=left]
[/align]
[align=left]
[/align]
2.测试&
[align=left]
[/align]

[align=left]public class Test {[/align]
[align=left]      @SuppressWarnings( "unused")[/align]
      public static void main
(String args[]){
[align=left]           [/align]
[align=left]            //因为加入&&和&运算符,我们假设两个错误的值[/align]
            if ( 5!=5&5/0==0)
{
[align=left]                System. out.println( "正确" );[/align]
[align=left]           }[/align]
[align=left]     }[/align]
[align=left]}[/align]
[align=left]
[/align]
[align=left]执行结果:[/align]
[align=left]
[/align]

Exception in thread "main" java.lang.ArithmeticException :
/ by zero
[align=left]     at test.Test.main( Test.java:13 )[/align]
[align=left]
[/align]
[align=left]
[/align]

[align=left]
[/align]

[align=left]仍然返回被除数是0的错误,这是因为“与”运算是将所有的程序运行完,那么或会出现怎么样的结果呢,我们来看看下面的代码[/align]
[align=left]
[/align]
[align=left]3.测试|[/align]
[align=left]
[/align]

public class Test
{
[align=left]      @SuppressWarnings( "unused")[/align]
      public static void main
(String args[]){
[align=left]           [/align]
[align=left]            //因为加入||和|运算符,我们假设一个正确的和一个错误的[/align]
            if ( 5==5|5/0==0)
{
[align=left]                System. out.println( "正确" );[/align]
[align=left]           }[/align]
[align=left]     }[/align]
[align=left]}[/align]

[align=left]
[/align]
[align=left]执行结果:[/align]
[align=left]
[/align]

Exception in thread "main" java.lang.ArithmeticException :
/ by zero
[align=left]     at test.Test.main( Test.java:13 )[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]结果还是报错,被除数为0,这说明,或"|"运算也是要执行所有的语句,那短路或"||"呢,我们接着看[/align]
[align=left]
[/align]
[align=left]4.测试||[/align]
[align=left]
[/align]

public class Test
{
[align=left]      @SuppressWarnings( "unused")[/align]
      public static void main
(String args[]){
[align=left]           [/align]
[align=left]            //因为加入||和|运算符,我们假设一个正确的和一个错误的[/align]
            if ( 5==5||5/0==0)
{
[align=left]                System. out.println( "正确" );[/align]
[align=left]           }[/align]
[align=left]     }[/align]
[align=left]}[/align]
[align=left]     [/align]
[align=left]执行结果:[/align]
[align=left]
[/align]

[align=left]正确[/align]
[align=left]
[/align]
[align=left]这说明短路或“||”只执行了代码中“5=5”就退出程序了,这对于或运算来说就是我们想要的效果,既达到了目的,又提高了代码的利用率[/align]

[align=left]
[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息