对象的赋值与比较(传值引用与传址引用)
编写一个java程序,在程序中定义sentence类,生成sentence类的多个对象,分别对这些对象进行赋值,再比较。
public class sentence{
String strname;
public static void main(String[] args)
{
sentence a=new sentence();
sentence e=new sentence();
sentence f=new sentence();
e.setname("李四");
a.setname("张三");
sentence d=a;
sentence b=a;//传址引用
f.strname=a.strname;//传值引用
System.out.println("d的名字是"+d.getname());
b.setname("李四");
sentence c=new sentence();
c.setname("王五");
System.out.println("a的名字是"+a.getname());
System.out.println("b的名字是"+b.getname());
System.out.println("c的名字是"+c.getname());
System.out.println("d的名字是"+d.getname());
System.out.println("e的名字是"+e.getname());
System.out.println("f的名字是"+f.getname());
if(a.equals(b))
System.out.println("a与b相等");
else
System.out.println("a与b不相等");
if(a.equals(c))
System.out.println("a与c相等");
else
System.out.println("a与c不相等");
if(a.equals(e))
System.out.println("a与e相等");
else
System.out.println("a与e不相等");
}
public void setname(String name)
{
strname=name;
}
public String getname()
{
return strname;
}
}
传值引用:在进行传递过程中,传递的是变量实际的值,是一个新的副本,一个变量值的改变不会影响另一个变量值的改变。例如f,a的值后期改动,f的变量值却不改变。
传址引用:主要针对对象操作。传递的是对象在内存中的首地址,形成了多个变量指向同一个对象的状态,这种现象的结果就是对任何一个引用该对象的地址的变量进行操作,都会影响指向该对象的其他变量。例如b变量值改变,a也随着改动。