㈠ java & &&
首先&既可以做位运算又可以做逻辑运算 &&只能做逻辑运算
作为逻辑运算符时:
表达式1 = 逻辑1 && 逻辑2
表达式2 = 逻辑3 & 逻辑4
&&:
如果逻辑1=FALSE 由于&& 就不会去判断逻辑2了 因为既然是与判断 逻辑1已经是FALSE了 表达式1自然为FALSE 不管逻辑2是FALSE还是TRUE 没必要判断了 如果逻辑1为TRUE 才会去判断逻辑2的结果 逻辑2为TRUE 表达式1就为TRUE 逻辑2为FALSE 表达式就为FALSE
&:
如果逻辑3为FALSE 由于是& 虽然是与判断 表达式2已经为FALSE了 但仍然会去判断逻辑4 尽管无法改变表达式2的结果了 这就是区别于&&的地方 如果逻辑3为TRUE 就和&&一样 继续判断逻辑4以求表达式2的结果
最后&作为位运算符的时候进行的是位运算 就是二进制运算 两边的值都是二进制数 结果也是位运算的结果 自然不会是简单的0/1 做逻辑运算时两边的值都是0/1 它别无选择 所以结果只能是0/1 关键是区别&什么时候做的是位运算 什么时候做的是逻辑运算
㈡ JAVA逻辑运算符短路的疑问!!!!!求达人帮忙
短路问题:
&&(和) 运算符
|| (或) 运算符
&& 运算符的优先级高于 || 运算符
(你的表达式写的不规范哦,最好是加上小括号(),虽然你这里达到了同样的效果)
假设两个条件: P Q
&& 运算||运算
P TTFFPTTFF
Q TFTFQTFTF
TFFFTTTF
现在来看我们的 if 条件
flag = (x>='a' && x<='z') || (x>='A' && x<='Z')
因为 有 小括号 () 所以优先级最高
先看 || 运算 前面一段
即:flag1 = (x>='a' && x<='z')
因为:x = 'Z' ; 所以: x>='a' 就为 F
根据上面的&&运算表,我们可以看出
只要有一个条件为F,整个条件都F
(因为前面的条件(x>='a')为F,所以后面的条件(x<='z')是否正确,
计算机都不会去执行它了,这里就发生了短路)
即整个条件都为 flag1 = F
b. 接着我们来看 flag2 =(x>='A' && x<='Z')
因为:x = 'Z' ; 所以: x>='A' 就为 T
根据 && 运算符
前面为T,(我们才有执行下一个条件的可能性,而条件(x>='A')条件为T,所以程序 会去判断后面的条件(a=‘Z’),所以第二次没有发生短路)
根据条件,后面也为 T
所以: flag2 = T
c . 最后我们根据 ||运算表, 我们可以得出结果
flag = flag1 || flag2 = ( F || T) = T
在||运算中,只要有一个为T,那么整个表达式都是为T的。
所以:如过flag1为T,那么无论flag2是否是T,计算机都不会在去执行flag2,这里也就发生了短路。
希望您能明白(思路有点乱)!
㈢ java里面的短路是什么意思
运算符书上说:“在java中的逻辑与和逻辑或运算符采用“短路”方法进行计算,先求出运算符左边的表达式的值,对或运算如果为true,则整个表达式的结果为true,不必对运算符右边的表达式进行计算。同样,对与运算,如果左边的表达式的值为false,则不必对右边的表达式的值进行计算,整个表达式的值为false,”
㈣ JAVA中的逻辑运算符!
三、逻辑运算符:
&(与)
|(或)
!(反)
&:当两边同时为真时,结果为真,否则为假
|
:当两边有一边为真时,结果为真,否则为假
!
:真值变假值,假值变真值
学JAVA也有不短的时间了,现在开发也有1年多了,不过你说的那些基础知识我也记不得。我一开始也一样害怕,学了就忘记了
不过告诉你,JAVA不是背出来的,是逻辑。
记忆方面,你只需要知道到哪里去查阅。
这就是为什么有那么多API
reference等的原因啊,因为大家都记不得。
㈤ JAVA中&&和&、||和|(短路与和逻辑与、短路或和逻辑或)的区别是什么
首先名称是不同的 &&逻辑与 ||逻辑或 它们都是逻辑运算符 & 按位与 | 按位或 它们都是位运算符 if(a==1&&b==2) 这是说既要满足a=1也要满足b=2 if(a==1||b==2) 这是说或者满足a=1或者要满足b=2 而a&b或者a|b则是二进制的与或运算 &同为1时为1,否则为0 |同为0时为0,否则为1 3&5则 0011 &0101 0001 等于1 3|5则 0011 |0101 0111 等于7 明白了吧O(∩_∩)O~ 补充: && 逻辑与 也叫做短路与 因为只要当前项为假,它就不往后判断了,直接认为表达式为假|| 逻辑或 也叫做短路或 因为只要当前项为真,它也不往后判断了,直接认为表达式为真
㈥ 问一下java的一些问题
1 可以。声明方较其它法没有任何不同。比如Return a[]; 2 每个StringBuffer对象都能 够存储由其容量指定的字符。如果超出了StringBuffer对象的容量,则容量就会自动地扩大,以容纳多出来的字符,这里的容量指内存空间,长度就是指字符串长了。 当使用逻辑操作符时,我们会遇到一种“短路”现象。即一旦能够明确无误地确定整个表达式的值,就不会再计算表达式剩余的部分了。因此,整个逻辑表达式靠后的部分有可能不会被运算。 System.out.println(false||true);//输出true,||不存在短路现象,表达式中有任意一部分为true就返回true,所以||逻辑操作符必须要将整个表达式运算完毕才能得出结果。 System.out.println(false&&true);//输出false。表达式中有任意一部分为false,整个表达式就返回false。不必将整个表达式运算完毕。
㈦ java语言中关于或与短路或的问题。
换成逻辑运算符后,x++==1
是真,所以运算符后面的运算式不再执行,所以y=1
㈧ java中的短路与(&&)、短路或(||) 与 逻辑与(&)、逻辑或(|)有什么区别啊
首先名称是不同的:
&&逻辑与||逻辑或它们都是逻辑运算符
&按位与|按位或它们都是位运算符
if(a==1&&b==2)这是说既要满足a=1也要满足b=2
if(a==1||b==2)这是说或者满足a=1或者要满足b=2
而a&b或者a|b则是二进制的与或运算
&同为1时为1,否则为0
|同为0时为0,否则为1
3&5则
0011
&0101
0001
等于1
3|5则
0011
|0101
0111
等于7
&&逻辑与也叫做短路与因为只要当前项为假,它就不往后判断了,直接认为表达式为假
||逻辑或也叫做短路或因为只要当前项为真,它也不往后判断了,直接认为表达式为真
㈨ 打扰,JAVA中&&是逻辑运算符,表示逻辑与(and)还是短路与都是网上说的,不知道哪个是对的了。
短路与 第一个为假,后面的将不执行 直接返回假
ps:你可以写一个来测试一下 比如if(1<2&&i++) 你看看i的值是否变了不就明白了
㈩ java短路逻辑与和短路逻辑或
额,&&是两边同时为真则为真,如果左边为假,右边不计算。 || 是只要有一边为真 结果就为真,左边为真,右边不计算。