JAVA的值传递问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 08:18:55
public class TestI {
public void get1(int i){
i = i/2;
}
public static void main(String[] args) {
int i = 4;
TestI ti=new TestI();
ti.get1(i);
System.out.println(i);
}

}
为何结果为4不为2

两个i是不同的,虽然名字相同,但get1方法中的i和main方法中的i是两个不同的变量。

这主要是由于,对于像int这样的基本类型,在调用方法进行传值的时候采用的是先复制再将复制的那个值传过去,原来那个值还是没有变的。

有什么问题欢迎找我讨论。

楼上的方法是行不通的,搞笑!你懂java不?i又不是在Testl类中定义的,两个i都是get1和main方法中的局部变量,看清楚!

因为你改变的i并不是你主方法里定义的i
要用this关键字
public class TestI {
public void get1(int i){
this.i = i/2;
}
public static void main(String[] args) {
int i = 4;
TestI ti=new TestI();
ti.get1(i);
System.out.println(i);
}

}