Java操作符及执行流程控制
作者:网络转载 发布时间:[ 2013/8/15 11:12:51 ] 推荐标签:
demo:PassObject.java
package javabase.flowcontrol;
class Letter{
char c;
}
public class PassObject {
/**
*对象引用
*/
static void f(Letter y){
y.c = 'z';
}
public static void main(String[] args) {
Letter x = new Letter();
x.c = 'a';
System.out.println("before:x.c = " + x.c);
f(x);
System.out.println("after:x.c = " + x.c);
}
}
/*输出结果:
before:x.c = a
after:x.c = z
*/
此类对于传递对象引用而引起的问题在Think In Java被称做”别名问题”
使用中应注意此类陷阱
++或--:前缀++/--先运算再生成值,后缀++/--先生成值再运算
==与equals:
比较2个实际值是否相等:对象用equals,基本数据类型用==
比较对象的地址是否相等:对象/基本数据类型都用==
demo:EqualsTest.java
package javabase.flowcontrol;
class ValueInt{
int id;
}
class ValueString{
String id;
@Override
public boolean equals(Object obj) {
boolean instanceFlag;
instanceFlag = obj instanceof ValueString;
if(!instanceFlag)
return super.equals(obj);
else{
ValueString vTemp = (ValueString)obj;
if(vTemp.id.equals(this.id)){
return true;
}
return false;
}
}
}
public class EqualsTest {
/**
* ==操作符、equals的区别
*/
public static void main(String[] args) {
//基本数据类型
int i1 = 100;
int i2 = 100;
System.out.println("i1 == i2 : " + (i1 == i2));
//对象
Integer n1 = new Integer(250);
Integer n2 = new Integer(250);
System.out.println("n1 == n2 : " + (n1 == n2));
System.out.println("n1 equals n2 : " + n1.equals(n2));
//自定义对象
ValueInt vInt1 = new ValueInt();
ValueInt vInt2 = new ValueInt();
vInt1.id = vInt2.id = 32;
System.out.println("vInt1 == vInt2 : " + (vInt1 == vInt2));
System.out.println("vInt1 equals vInt2 : " + vInt1.equals(vInt2));
ValueString vString1 = new ValueString();
ValueString vString2 = new ValueString();
vString1.id = vString2.id = "李艺辉";
System.out.println("vString1 == vString2 : " + (vString1 == vString2));
System.out.println("vString1 equals vString2 : " + vString1.equals(vString2));
//String 对象比较复杂,后面会有String对象的详细解析
}
}
/*输出结果:
i1 == i2 : true
n1 == n2 : false
n1 equals n2 : true
vInt1 == vInt2 : false
vInt1 equals vInt2 : false //这是因为equals默认行为是比较2个对象的引用
vString1 == vString2 : false
vString1 equals vString2 : true //复写该对象的equals方法后的比较
*/

sales@spasvo.com