JAVA 引用变量 方法传递 的问题

作者&投稿:掌桂 (若有异议请与网页底部的电邮联系)
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");
}
}


长乐市15313797477: java中的变量怎样才作为方法参数传递 -
尹胀缬沙: 直接传递就可以了吧.不知道你想知道啥 调用某方法的时候直接把变量当参数传进去呀 比如 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

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网