C#和JAVA中&和&&各有什么区别

来源:百度知道 编辑:UC知道 时间:2024/06/22 03:34:22
C#中&和&&有什么区别
JAVA中&和&&有什么区别

huima80和darko2o8说的不够全(虽然连指针都提到了),everkown描述的比较乱。

C#:
&:Address-of(Unary一元) 就是huima80说的有关指针地址的运算符。
&:Bitwise AND 位与运算符,学计算机最基础的会教的。
&:Logical AND 逻辑与运算符,二元,两边的参数都会参与计算。
&&:Conditional AND 条件与运算符,二元,如果左边的满足假,那么右边不用计算,返回假。否则再计算右边。

最后两点的区别是:我举个例子
int i = 0, j = 0;
if ((i++ > 0) && (j++ > 0)); //do something.
这个时候i = 1, j = 0,因为前面为假,所以j++未参与计算。

int i = 0, j = 0;
if ((i++ > 0) & (j++ > 0)); //do something.
这个时候i = 1, j = 1,因为前后都被要求参与计算。

这种其实主要是考试的时候,真正工作的时候很少或避免出现这样的语句,因为可能会混淆编程的人。

另外,在C#中,if这要求判断的语句后面的判断必须明确返回true或者false
所以对于if (num & 1)这样的表达式是错误的,必须明确判断if (num & 1 == 1)。

至于JAVA,我有年头不用了,不敢乱说。据我所知,这块应该是差不多的。

& 是位运算符,就是两个二进制位同时等于1,结果才等于1
1 & 1 == 1

&& 是关系运算符,就是两个值同时为真,结果才为真
true && true == true

另外,c#中,在非安全模式下,&还可以用作取地址运算符,需要放在变量前面。

&&的效率要高一些
1>2&2<1 输出false 1>2和2<1都会去判断
1>2&&2<1 输出false