专业回答
java中&和&&的区别,&和&&虽然都是逻辑运算符,都是判断两边为真,则语句成立,但是在运行的时候,还是有差别的,下面举例来说明。
例子一:
public class Test2{
public static void main(String[] args){
int i=3;
if((i++>5)&(i++<9)){
System.out.println(i);
System.out.println("恭喜,执行完了条件语句!");
}
System.out.println(i);
}
}
从条件判断语句来看,是不成立的,但是i是自加了两次,有初始值3变成5。
例子二:java中&&的例子:
public class Test2{
public static void main(String[] args){
int i=3;
if((i++>5)&&(i++<9)){
System.out.println(i);
System.out.println("恭喜,执行完了条件语句!");
}
System.out.println(i);
}
}
从条件判断语句来看是不成立的,变量i只自加了一次。
总结:
&和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假;但是&&当第一个条件不成之后,后面的条件都不执行了,而&则还是继续执行,直到整个条件语句执行完为止。如&&例子中的i++>5被执行了,而i++<9并没有被执行,这就是他们的差别。&例子中的i++>5和i++<9都被执行了。
例子一:
public class Test2{
public static void main(String[] args){
int i=3;
if((i++>5)&(i++<9)){
System.out.println(i);
System.out.println("恭喜,执行完了条件语句!");
}
System.out.println(i);
}
}
从条件判断语句来看,是不成立的,但是i是自加了两次,有初始值3变成5。
例子二:java中&&的例子:
public class Test2{
public static void main(String[] args){
int i=3;
if((i++>5)&&(i++<9)){
System.out.println(i);
System.out.println("恭喜,执行完了条件语句!");
}
System.out.println(i);
}
}
从条件判断语句来看是不成立的,变量i只自加了一次。
总结:
&和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假;但是&&当第一个条件不成之后,后面的条件都不执行了,而&则还是继续执行,直到整个条件语句执行完为止。如&&例子中的i++>5被执行了,而i++<9并没有被执行,这就是他们的差别。&例子中的i++>5和i++<9都被执行了。
2010-06-10 08:42
提问者采纳
好像好似执行顺序也不一样吧,&&会全部考虑,而&遇到一个false就停止,应该是这样的。
评论(7)
3
41
java的相关知识
- 2011-01-09java字符串数组 25
- 2009-11-18java 自定义异常 58
- 2010-07-19飞信java通用版jar 55
- 2010-10-22java 对象数组定义 54
- 2010-12-07java中截取字符串 65
其他9条回答
2010-06-10 08:43
xiang9fei
四级
(boolean1 && boolean2)
如果boolean11为false的话 boolean2就不去判断 整段为false
而(boolean1 & boolean2)
如果boolean1为false,boolean2还是为去判断 整段也为false
如果boolean11为false的话 boolean2就不去判断 整段为false
而(boolean1 & boolean2)
如果boolean1为false,boolean2还是为去判断 整段也为false
评论
3
2
2010-06-10 08:47
amima2126
四级
&是用来处理0101这样的2进制字符的位运算的,而&&是处理true和false这样的布尔逻辑运算。
&需要计算两边表达式的值,然后计算整个表达式的值
&&短路运算符,第一个表达式的值为FALSE,那么整个逻辑表达式的值为FALSE,第二个表达式不计算
&需要计算两边表达式的值,然后计算整个表达式的值
&&短路运算符,第一个表达式的值为FALSE,那么整个逻辑表达式的值为FALSE,第二个表达式不计算
评论
4
0
2010-06-10 08:50
wxl9260
五级
&&逻辑与 例如: if(a&&b) //只要 a 或b有一个是false那么就是false
类似操作符: ||
a||b 只要有一个为true那么就是true
&位与 例如: int a=4,b=3;
在2进制中 a就是 0000 0100
b就是 0000 0011
a&b=0000 0000 那么就是0了
如果是a|b =0000 0111 在十进制中就是7
类似操作符: ||
a||b 只要有一个为true那么就是true
&位与 例如: int a=4,b=3;
在2进制中 a就是 0000 0100
b就是 0000 0011
a&b=0000 0000 那么就是0了
如果是a|b =0000 0111 在十进制中就是7
评论
0
0
2010-06-10 08:59
wlrloveyou
五级
楼上的都没说到重点上,看这个例子,
if(str!=null && str.equals("123")) {}
这里先判断str是否为null,必须用&&。因为如果只用&那么第一个条件判断如果为false就证明str=null,这时候再做第二个判断str.equals("123"),因为str是null所以就会出现空指针异常。而用&&就不会出现异常,因为判断完str!=null是false整个表达式就直接返回false了。不会做第二个条件判断。
if(str!=null && str.equals("123")) {}
这里先判断str是否为null,必须用&&。因为如果只用&那么第一个条件判断如果为false就证明str=null,这时候再做第二个判断str.equals("123"),因为str是null所以就会出现空指针异常。而用&&就不会出现异常,因为判断完str!=null是false整个表达式就直接返回false了。不会做第二个条件判断。
评论(1)
6
0
2010-06-10 09:46
zenghz_wuhan
三级
&&是短路运算符,只要前面一个条件是false就结束,&不管前面是true还是false,两边都会执行,如果两个当中有一个false则返回false