java基本数据类型传值问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 11:34:23
谁能举一个最简单的例子,让我能一目了然的理解。
在此谢过,答满意再追加分。谢谢大家。麻烦举个简单的小程序,当例子 谢谢~~书上没例子,,

public class Test{
public static void main(String[] args){
int i=5; //i的值为5;
int j=i; //j的值被赋为i的值。
System.out.print(j); //结果应为5。
}
}

在Java中基本数据类型是传值的 而对象是传递引用的 也就是说

public void f(int i) {
i = 1;
}

public void p() {
int i = 0;
f(i);
}

这样之后在p中i仍然是0 不会变成1 因为仅仅是把i的值传递了过去 i本身不会跟着变

但如果是对象就不一样了

public void f(MyObject o) {
o = new MyObject("new");
}

public void p() {
MyObject o = new MyObject("old");
f(o);
}

在p中调用f之后 o会变成那个new的MyObject 因为是把引用传递了过去 所以其实改变的是同一个对象 会跟着变哦

不过在Java中有个特例 就是String 它属于对象 也就是引用类型 但是确实像基本类型一样传值的

public class Test{

public void toTest(int i,String str){

}
public static void main(String[] agrs){
int i=0;
String str="sss";
Test t=new Test();
t.toTest(i,str);
}
}