Java中变量有以下两种:
1.基本类型变量:包括char,byte,short,int,long,float,double,boolean.
2.引用类型变量:包括类,接口,数组(基本类型数组和对象数组).
这一段代码详细说明了值传递与引用传递的关系.值传递只是Copy了过去.所做的动作与真正的值与关.而引用传递是地址上的变化.所以有相应的影响
[color=blue]参数-基体类型
原有的值:0
赋值之后:0
String改变之后:1234
运算之后:0
运算之后:1234
改变之后:0
引用改变之后:20
引用改变之后welcome[/color]
1.基本类型变量:包括char,byte,short,int,long,float,double,boolean.
2.引用类型变量:包括类,接口,数组(基本类型数组和对象数组).
public class ParamTest {
//初始值为0
protected int num=0;
//String初始值
String str="1234";
//为方法参数重新赋值
public void change(int i)
{
i=5;
}
public void change(String str)
{
str="4556";
}
//为方法参数重新赋值
public void change(ParamTest t)
{
ParamTest tmp=new ParamTest();
tmp.num=9;
tmp.str="对象改变";
t=tmp;
}
//改变方法参数的值
public void add(int i)
{
i+=10;
}
//改变方法参数属性的值
public void add(ParamTest t)
{
t.num+=20;
t.str="welcome";
}
public static void main(String[] args) {
ParamTest t=new ParamTest();
System.out.println("参数-基体类型");
System.out.println("原有的值:"+t.num);
//为基本类型参数重新赋值
t.change(t.num);
System.out.println("赋值之后:"+t.num);
t.change(t.str);
System.out.println("String改变之后:"+t.str);
//为引用类型参数重新赋值
t.change(t);
System.out.println("运算之后:"+t.num);
System.out.println("运算之后:"+t.str);
//基本类参数改变
t.add(t.num);
System.out.println("改变之后:"+t.num);
//引用参数改变
t.add(t);
System.out.println("引用改变之后:"+t.num);
System.out.println("引用改变之后" + t.str);
}
}
这一段代码详细说明了值传递与引用传递的关系.值传递只是Copy了过去.所做的动作与真正的值与关.而引用传递是地址上的变化.所以有相应的影响
[color=blue]参数-基体类型
原有的值:0
赋值之后:0
String改变之后:1234
运算之后:0
运算之后:1234
改变之后:0
引用改变之后:20
引用改变之后welcome[/color]