JAVA 引用变量 方法传递 的问题
作者&投稿:掌桂 (若有异议请与网页底部的电邮联系)
传值传引用都不够准确,可以理解成传引用变量的副本值。引用变量分为字面值引用变量(即基本数据类型引用变量)和对象引用变量 。 详情需要了解数据类型使用机制和堆栈的概念:http://www.cnblogs.com/alexlo/archive/2013/02/21/2920209.html
对象引用变量:即普通java对象的引用变量 ,如 String a = "abc" , a就是对象引用变量。java 是不能直接操作对象的,只能通过对“对象引用的操作”来操作对象。而对象的引用的表示就是对象变量。可以多个对象引用变量指向同一个对象。
字面值引用变量:即普通数据类型的引用变量 ,如 int b = 1 , b就是字面值引用变量。可以有多个字面值引用变量指向同一字面值,但其中一个引用修改字面值,不会影响另一个引用字面值,这点要与对象引用区别开。
你自己定义的对象,以及其他对象作为方法参数传时,是引用传递,在接收该参数的方法内改变对象参数的值是会影响到原值的,而Java中八个基本类型的方法参数传递则是值传递,在接收的方法内改变值,也只是改变形式参数,而不会影响到实参
讲A和B封装成对象,值传递是对数据的拷贝,而对象的引用则是引用传递,用面向对象的思想考虑就不难了在这里参数传递的事实上也是一个引用,也就是让obj1和obj2这两个引用指向a,b指向的对象。传递引用后只是obj1和obj2之间引用对象的改变,与a,b无关。这是我的理解,希望对你有所帮助。帮我加分哈
Integer a = new Integer(3);
Integer b = new Integer(5);
放在外面就可以了,要不然就是定义个对象封装它们
public class Integ {
public static void main(String args[]) {
Integer in = new Integer(3);
Integer ind = new Integer(5);
/* System.out.println(in);
System.out.println(ind);*/
Test(in, ind);
}
public static void Test(int a, int b) {
int temp;
temp = b;
b = a;
a = temp;
System.out.println(a + " a");
System.out.println(b + " b");
}
}
尹胀缬沙: 直接传递就可以了吧.不知道你想知道啥 调用某方法的时候直接把变量当参数传进去呀 比如 int x = 100; setwidth(x);
长乐市15313797477: java中的值传递和引用传递到底有什么区别 - ?
尹胀缬沙: java中在参数传递时有2种方式,两者的区别: 1、按值传递:值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数.简单来说就是直接复制了一份数据过去,因为是直接复制,...
长乐市15313797477: java中,向方法传递对象引用变量是按值传递,其中有修改变量和修改对象的问题, - ?
尹胀缬沙: 传值传引用都不够准确,可以理解成传引用变量的副本值.引用变量分为字面值引用变量(即基本数据类型引用变量)和对象引用变量 . 详情需要了解数据类型使用机制和堆栈的概念:http://www.cnblogs.com/alexlo/archive/2013/02/21/2920209...
长乐市15313797477: 在Java中,在方法传值的时候是"引用传递",还是在任何用"="向对象变量赋值的时候是"引用传递"? - ?
尹胀缬沙: 在新命名一个变量时比如,String a=new String();其中a作为一个变量标志符就是所谓的引用,它是存放在栈内保存的,而new String()是到堆中开辟空间的.所谓的引用传递是指被赋值的引用指向=后面的引用所指向的堆的空间地址.
长乐市15313797477: java引用传递怎么用 - ?
尹胀缬沙: String类型的传递是引用传递.也即是地址传递.传的是str的地址.把str里“good”的地址传给change()方法里的str.change()里的str赋予新的地址.是“testok”的地址.此时ex.str对“good”的引用没变.就是还是存放“good”的地址...
长乐市15313797477: java方法传参问题? - ?
尹胀缬沙: 1、第二个类的参数是不是int ix,int iy? 2、如果是,写法差一点点,意义就不一样了:第一个是把参数值赋值给ponit中的x和y第二个刚好相反,把point中的x和y的值赋给参数中的ix和iy了.init是方法名,void表示无返回值.大括号里的部分才是方法体
长乐市15313797477: 关于java引用传递问题,谁能给一个详细的解释,谢谢了??? - ?
尹胀缬沙: getList方法中 list = new ArrayList();使变量list指向了新的地址 list.add(1); list.add(2); 修改的是新地址的内容,main方法 System.out.println("size:" + list.size()); 打印的还是旧地址的值所以是0 getList方法中去掉list = new ArrayList();这个初始化的 打印的就是2了.这么简单的问题都没人回答了,汗!
长乐市15313797477: java中参数传递,按引用传递?? - ?
尹胀缬沙: 就是说按地址去访问,数据有按值传递 和按引用传递 值传递是传值,引用传递时传地址 值类型的有 简单数据类型(int double...)、枚举、结构 类 String 对象等都为引用类型 因为对象是引用类型,所以不是直接访问数据,而是去访问他存放的地址 楼主明白了吗?
长乐市15313797477: 咨询java高手,对象数组作为方法参数时的引用传递的问题 - ?
尹胀缬沙: 方法一其实也是按引用传递,但是千万千万要注意,你要修改的是“对象的值”,而不是“对象引用的值”.形参和实参对应的是对象的引用地址,所以这句写得很有问题: str1=str2; 你这里是试图将str1的值用str2代替, 但是这里的str1是形...
长乐市15313797477: JAVA按引用传递的问题 - ?
尹胀缬沙: 第10行调用了test1方法,传过去的是一个对象,然后方法中改了对象的值为20,并打印出来,第一次当然是20,然后回到main方法中,这时对象的属性已经被方法改了,输出也当然是20