关于在if()里面用& 和&& | 和 ||的区别

stringa=null;if(a!=null&a.Length>0){}if(a!=null&&a.Length>0){}if(a!=null|a.Length==0)... string a = null;
if(a!=null&a.Length>0) {}
if(a!=null&&a.Length>0) {}
if(a!=null | a.Length==0) {}
if(a!=null || a.Length==0) {}
貌似&&逻辑运算符是前面false 后面就执行
& 前面执行后面也要执行?
请高手分析一下 | 和 || 是什么样的?
展开
 我来答
博望侯6
2015-11-10 · TA获得超过153个赞
知道答主
回答量:48
采纳率:0%
帮助的人:16.6万
展开全部
是什么编程语言?C还是Verilog?
我暂且假定是C
这几个符号的区别在于作用对象。&是逻辑量按位取与,也就是两个逻辑量一位一位地进行“与”运算。两边操作数的第一位上都是1时,结果的第一位值为1。否则该位值为0,其他位同理。
比如
B00010010&B00100011,按位计算结果为B00000010,
&&则是两个布尔变量(就是只有真和假两种值的变量)的运算,只有两个布尔变量都为“真”时,这个式子的结果才是“1”或者“真”,比如if (a=0 && b=1)就是说只有当a=0且b=1时才符合条件。
同样 | 是逻辑变量的运算,取“或”,|| 则是布尔变量的运算,取“或”
清淡且清晰的国宝j
2012-08-29 · TA获得超过569个赞
知道小有建树答主
回答量:397
采纳率:0%
帮助的人:225万
展开全部
&是位与操作,一定会执行; &&是逻辑与操作,如果&&的前面为false了,后面的就不会执行了。

|是位或操作、一定会执行; || 是逻辑或操作,如果||的前面为true了,||的后面就不会执行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shaoqi08110820
2012-08-29 · TA获得超过2508个赞
知道大有可为答主
回答量:1514
采纳率:100%
帮助的人:1712万
展开全部
a&&b 如果a为true,编译器不知道整个表达式是true还是false所以,必须执行b确定
如果a为false,编译器知道整个结果是false,b就不执行了
a||b 同理,如果a为true ,编译器知道整个表达式是true,就不执行b了,
但是 如果a为false 编译器还要执行,判定最后的结果
& 与运算
| 或运算
这两个 你只要记住 1&1=1 1&0=0 0&0=0 1 | 1=1 1|0=1 0 |0=0 就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
没有响应m2
2012-08-29 · TA获得超过8387个赞
知道大有可为答主
回答量:7579
采纳率:33%
帮助的人:3426万
展开全部
...你反了一个严重的错误~~~~~~&和|的值不是blooean的~~~~~~~~而是一个int .....
if()里只接受blooean型的结果 所以
if(a!=null&a.Length>0) {}

if(a!=null | a.Length==0) {}

这些都不能通过编译(如果是C语言的话可以通过编译......因为c语言了if括号的值可以是数组1为真0为假)..
其实你上边的例子我没有测试 不过可能会通过编译 因为有运算符的优先级不过如果这么写的话
if((a!=null )| (a.Length==0)) {}是肯定通不过编译的
追问
简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。 
区别主要答两点:
a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
b.逻辑操作不会产生短路

这个怎么解释?
追答
.好吧 你赢了 我错了
public class ttttz {
/**
* @param args
*/
static boolean s (int[] sx)
{
sx[0]=10;
return true;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int x[] = new int[1];
x[0]=1;
if((x[0]==5)&&ttttz.s(x))
{
/*这里使用了&& 必须&&的前后的值都是真结果才为真 如果第一个结果为假的话 后边的
ttttz.s(x) 就不会被执行这个时候x的值还是1 */
}
System.out.print(x[0]);

if((x[0]==5)&ttttz.s(x))
{
/*用&的话 后边de ttttz.s(x)也会被执行 这就是你上边说的 b逻辑操作不会产生短路
|和||也是同理 ||的话如果左边的返回值是真的话那右边的表达式就不会被执行了 用|的不管左边的值是什么右边的表达式都会被执行
*/

}
System.out.print(x[0]);

}
}

这个例子虽然有点傻但是完全却能说明你说的东西
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tisn05
2012-08-29 · 超过18用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:47.1万
展开全部
&&是“和”、“且”的意思(and)
||是“或”的意思(or)
&、| 是位运算,&位和,|位与
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式