初学者的一点迷惑请各位指教 !(p1.name.equals(p2.name)@@p1.name==p2.name)这一行代码就返回一个布尔值,当为true的时候,就给temp赋值false,否则保持true不变。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道楼主这段代码怎么来的,如果是java代码1、首先 boolean temp=ture; 应该为boolean temp=true;2、p1.name.equals(p2.name)&&p1.name==p2.name(如果@@这个能编译通过?) @@是啥如果是&&的话一定会执行如果是||的话就看name的值了,值不一样会执行 Java的代码应该这样写:boolean temp=true; if(!(p1.name.equals(p2.name)&&p1.name==p2.name)){ temp=false;} &&有短路计算的功能,当p1.name.equals(p2.name)是FALSE时p1.name==p2.name不会执行,当(p1.name.equals(p2.name)&&p1.name==p2.name)返回值为FALSE时temp=false;执行 boolean temp=ture; if(!(p1.name.equals(p2.name)&&p1.name==p2.name)){ temp=false;} 如果p1.name.equals(p2.name)和p1.name==p2.name值其中只要有一个为false则 temp=false; 执行 写错了,应该是3楼那样写的。他的执行顺序是:1、先看(p1.name.equals(p2.name)和p1.name==p2.name 2、再判断!(p1.name.equals(p2.name) 3、最后判断!(p1.name.equals(p2.name)&&p1.name==p2.name)这里主要涉及到运算优先级的关系:点 > () > ! > && if内的逻辑值如果为true,则执行if控制的语句,否则执行其对应的else语句(如果有) (p1.name.equals(p2.name)@@p1.name==p2.name)这里面为true的话 !(p1.name.equals(p2.name)@@p1.name==p2.name)为false if就不执行了 反过来一样 boolean temp=ture; if(!(p1.name.equals(p2.name)@@p1.name==p2.name)){ temp=false;} 不知道你的@@是什么运算符,但是&&和||都是有短路作用的,也就是说&&只要前面的条件为假,就不会去判断后面的表达式。如果||的第一个表达式为真,那么也不会去考虑后面的表达式了。再回到你的判断,如果name为String的话,p1.name==p2.name应该都是假的,所以就看你的@@代表什么运算符了 看不懂@@,你可以换成&& 或 || 试下 boolean temp=true; if(!(p1.name.equals(p2.name)&&p1.name==p2.name)){ temp=false;} 大概逻辑是:首先声明一个 boolean 类型 temp 变量并赋初值为 true然后拿 p1 对象中的 实例变量name 与 p2对象中的实例变量 name比较的结果任务 if 循环条件 为真是改变temp的值为 false这段代码中,有个隐藏的知识点: == 比较是 地址 equals()方法 比较的是 值注:逻辑运算符 && 是 and 并列,即,满足&&两边的条件 !()是 否 ,即,与小括号中相反的结果 这段代码中,有个隐藏的知识点: == 比较是 地址 equals()方法 比较的是 值这个应该是正解,这应该是考点。 ture@@让别人不喷的情况下 先摆正自己的学习态度 等价于:temp=p1.name.equals(p2.name)@@p1.name==p2.name 这样的逻辑即可用于当temp=false的时候执行if语句块中的代码。 请问我用java写的这个求《对称日》程序问题出在哪里呢? 怎么向文件中间插入数据? Swing 如何快速输出100个按钮 子线程join()的疑问!join后子线程还是并发的么? 请问有JAVA的帮助文档吗? 大家来说说!!! 大家帮我解答一下类Hashtable的特点和主要方法.还有这个Vector. 一个JMenuItem的问题。 刚学,就是不懂一点小问题,不要见笑我,什么是面对对象? 请各位大虾给小弟推荐几本好书 如何重绘组件? 求大神帮助
1、首先 boolean temp=ture; 应该为boolean temp=true;
2、p1.name.equals(p2.name)&&p1.name==p2.name(如果@@这个能编译通过?)
如果是&&的话一定会执行
如果是||的话就看name的值了,值不一样会执行
boolean temp=true;
if(!(p1.name.equals(p2.name)&&p1.name==p2.name))
{
temp=false;
} &&有短路计算的功能,当p1.name.equals(p2.name)是FALSE时p1.name==p2.name不会执行,当(p1.name.equals(p2.name)&&p1.name==p2.name)返回值为FALSE时temp=false;执行
if(!(p1.name.equals(p2.name)&&p1.name==p2.name))
{
temp=false;
} 如果p1.name.equals(p2.name)和p1.name==p2.name值其中只要有一个为false
则 temp=false; 执行
他的执行顺序是:1、先看(p1.name.equals(p2.name)和p1.name==p2.name
2、再判断!(p1.name.equals(p2.name)
3、最后判断!(p1.name.equals(p2.name)&&p1.name==p2.name)这里主要涉及到运算优先级的关系:点 > () > ! > &&
为false if就不执行了 反过来一样
if(!(p1.name.equals(p2.name)@@p1.name==p2.name))
{
temp=false;
}
不知道你的@@是什么运算符,但是&&和||都是有短路作用的,也就是说&&只要前面的条件为假,就不会去判断后面的表达式。
如果||的第一个表达式为真,那么也不会去考虑后面的表达式了。再回到你的判断,如果name为String的话,p1.name==p2.name应该都是假的,所以就看你的@@代表什么运算符了
if(!(p1.name.equals(p2.name)&&p1.name==p2.name))
{
temp=false;
}
大概逻辑是:
首先声明一个 boolean 类型 temp 变量并赋初值为 true
然后拿 p1 对象中的 实例变量name 与 p2对象中的实例变量 name比较的结果任务 if 循环条件 为真是改变temp的值为 false
这段代码中,有个隐藏的知识点: == 比较是 地址
equals()方法 比较的是 值注:逻辑运算符 && 是 and 并列,即,满足&&两边的条件
!()是 否 ,即,与小括号中相反的结果
equals()方法 比较的是 值
这个应该是正解,这应该是考点。