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

publicstaticvoidmain(String[]args){intx=4;inty=5;if(x++>4&++y>5){x++;}System.out.prin... 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
这里的&是怎么个用法
展开
 我来答
fuhaiwei
推荐于2016-06-11 · TA获得超过3409个赞
知道大有可为答主
回答量:974
采纳率:75%
帮助的人:1392万
展开全部
这两个的区别在于&&会进行短路操作。

也就是说 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()一定会运行,所以会报空指针。
齐风霁月
2013-08-09
知道答主
回答量:35
采纳率:0%
帮助的人:24.8万
展开全部
&在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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
enjoy大苏打
2013-08-09 · TA获得超过102个赞
知道答主
回答量:82
采纳率:0%
帮助的人:39.6万
展开全部
额 …& &&的区别就是
&&在如果有俩个条件 当第一个条件false后 &&就不会判断第二个条件
而&俩个条件始终都会进行判断
然后&这个符号是用来判断俩个条件的真假性 好像你说的那样
当x++>4&++y>5 左边跟右边都是真的话 返回true给if知道 然后进行下一步动作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Stale331x
2013-08-09 · TA获得超过1299个赞
知道小有建树答主
回答量:1276
采纳率:33%
帮助的人:838万
展开全部
&& || 这两个操作符,当可以根据第一个条件就判断到最终结果的时候,后面的表达式则不会运行。
例子最好解释
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()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
菜狼一枚
2013-08-09 · 超过27用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:44.2万
展开全部
如果是&,则符号前后判断语句都做运算。
如果是&&,则该符号前条件成立就执行IF里面语句块,不执行后面语句。可以提高性能
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式