有关JAVA里if判断语句中 如果只为一个& 怎么理解?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有关JAVA里if判断语句中 如果只为一个& 怎么理解?相关的知识,希望对你有一定的参考价值。

public static void main(String[] args) int x = 4;int y = 5;if(x++>4 & ++y>5) x++;System.out.println("x=" + x + ",y=" + y);
以上面的代码为例
x++>4&++y>5
这里的&是怎么个用法

这两个的区别在于&&会进行短路操作。

也就是说 b1 && b2 ,如果 b1 = false,
那么因为整个表达式必然为false,所以b2就不进行判断了。

b1 & b2则不是这样,即使b1 = false,b2也会运行。

主要用处就是上面你的例子的用法,不但要进行判断,条件语句还会有“副作用”的时候。

-----

额外例子:
if(string == null || string.length() ==0)
不会报空指针异常。因为如果如果string=null的话,string.length() 根本就不会运行。

if(string == null | string.length() == 0),如果string=null的话,因为string.length()一定会运行,所以会报空指针。
参考技术A &在Java中表示两种运算符,逻辑与和按位与。
在boolean类型运算时使用逻辑与运算,在数值类型运算时使用会用数值的二进制数进行按位与运算。
例如If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)不会增长。

在这里则是无论if语句里的两个条件‘x++>4’和‘++y’>5,都会执行后面的语句‘x++’。
给你个例子你:

public static void main(String[] args)
int i1 =1,b1=2;
//使用&&
if(i1==2 && (b1++)== 3)
System.out.println("使用&&:b1="+b1);
else
System.out.println("使用&&:b1="+b1);

//使用&:
int i2 =1,b2=2;
if(i1==2 & (b2++) == 3)
System.out.println("使用&:b2="+b2);
else
System.out.println("使用&:b2="+b2);



打印结果:
使用&&:b1=2
使用&:b2=3

使用&&的话如果第一个条件不符合就不会执行后面的条件
使用&的话两个条件都会执行。

可以看出 & 和 && 都是与的运算符 但&会不管两个条件对与错 都会运算一遍所以 b2 作了 b2++ 运算 ,结果变成了3.

哪看到的?有没一段程序?
那是A 和 1做与运算再把 一个值 赋回给A和 A +=1差不多吧

参考资料:http://zhidao.baidu.com/question/92628276.html?si=1
参考技术B 额 …& &&的区别就是
&&在如果有俩个条件 当第一个条件false后 &&就不会判断第二个条件
而&俩个条件始终都会进行判断
然后&这个符号是用来判断俩个条件的真假性 好像你说的那样
当x++>4&++y>5 左边跟右边都是真的话 返回true给if知道 然后进行下一步动作
参考技术C && || 这两个操作符,当可以根据第一个条件就判断到最终结果的时候,后面的表达式则不会运行。
例子最好解释
public class DemoStale331x
private static boolean returnTrue()
System.out.println("true");
return true;

private static boolean returnFalse()
System.out.println("false");
return false;


public static void main(String args[])
if(returnFalse() & returnTrue() )
System.out.println("returnFalse() & returnTrue()");

System.out.println("returnFalse() & returnTrue()");
if(returnFalse() && returnTrue() )
System.out.println("returnFalse() && returnTrue()");

System.out.println("returnFalse() && returnTrue()");
if(returnTrue() | returnFalse() )
System.out.println("returnTrue() | returnFalse()");

System.out.println("returnTrue() | returnFalse()");
if(returnTrue() || returnFalse() )
System.out.println("returnTrue() || returnFalse()");

System.out.println("returnTrue() || returnFalse()");



运行结果
run:
false
true
returnFalse() & returnTrue()
false
returnFalse() && returnTrue()
true
false
returnTrue() | returnFalse()
returnTrue() | returnFalse()
true
returnTrue() || returnFalse()
returnTrue() || returnFalse()
参考技术D 如果是&,则符号前后判断语句都做运算。
如果是&&,则该符号前条件成立就执行IF里面语句块,不执行后面语句。可以提高性能

c语言里,for循环不像Java有让我知道循环控制的范围,语言怎么判断循环控制的范围呀?

参考技术A c语言for循环是有的,只是你的课本里刚好for循环里都是一条语句可以省略。
即是
for(i=0;i<10;i++)
prinrf("%d",a[i]);
等价于
for(i=0;i<10;i++)
prinrf("%d",a[i]);追问

请问图里第二个for控制到哪里?

追答

到执行完if里的语句为止

追问

怎么看出来的?

追答

c里面如果循环里只执行一条语句可以省略,但两条以上就必须加上;
那一句其实就等于
for(j=0......)

for(i=0.....)

if(.....)

语句.....


本回答被提问者采纳
参考技术B 其实C语言里比较规范的写法也是有的,一般是有多条语句的时候会用到,没有括号就是控制一条语句嘛。追问

那我书里的是不是不标准?

以上是关于有关JAVA里if判断语句中 如果只为一个& 怎么理解?的主要内容,如果未能解决你的问题,请参考以下文章

sql里as出来的数据怎么进行添加判断条件

java if 语句默认

java里,判断一个对象是不是是null,怎么判断

c语言里,for循环不像Java有让我知道循环控制的范围,语言怎么判断循环控制的范围呀?

js的if语句判断条件到底是啥情况

mybatis里if标签判断字符串相等不相等的有关问题