2 lyylxf Lyylxf 于 2016.05.12 11:02 提问

一个java问题 值传递的

public class test1 {
private int i = 0;
public test1(int i) {
this.i = i;
}
public static void process(test1 obj) {
obj = new test1(99);
obj.i --;
}
public static void main(String[] argv) {
test1 o1 = new test1(1);
process(o1);
System.out.println("o1.i=" + o1.i);
}
}

为什么输出结果就是 o1.i=1 求指导

6个回答

havedream_one
havedream_one   2016.05.12 12:12
已采纳

图片说明

BlueZealot1982
BlueZealot1982   2016.05.12 11:07

因为在Java中所有的赋值操作都是值传递,在Process方法中new一个新对象,赋值给obj,这是一个值传递,不会改变传入引用的内容。
如果想要改变,假设有Set函数的情况下,在Process方法中执行obj.setI(99-1);就可以了。

CSDNXIAON
CSDNXIAON   2016.05.12 11:12

java值传递问题
java的值传递问题
关于java中的值传递问题
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

xulanshan33
xulanshan33   2016.05.12 11:15

数组是引用传址,这传值

Ro_bot
Ro_bot   2016.05.12 13:16

因为新new出了一个对象啊,也就是说process()修改的是新的那个对象

u013058549
u013058549   2017.02.11 19:53
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java值传递彻底明白~
时间: 2004-4-06 13:18:27    标题: 一个绝对害了不少人的Java技术问题! 我不记得自己是怎么学到的,但是我相信绝大部分从事java学习Java的人都一直这么以为一个小的技术问题: 在Java中方法参数的传递,对象是传递引用,基本数据类型是传递值。而且一直一来都似乎没有人提出过疑问。 直到最近,我在为公司基本Java开发人员编写考试试
Java面向对象值传递和引用传递
Java面向对象值传递和引用传递Java面向对象值传递和引用传递Java面向对象值传递和引用传递Java面向对象值传递和引用传递
Java当中的内存分配以及值传递问题内存解析
首先必须说明作为Java程序员对于内存只要有大致的了解就可以了,如果你对Java当中的某一个知识点在不需要分析内存分配过程的情况下可以掌握,那就大可不必去研究内存。如果你对知识点已经掌握,那么你应该把更多的精力放在对业务逻辑的分析与设计上,这样的话你才可能这一行业走的更远。  好了废话不多说了,下面我带着大家先来简单的看一下Java当中所涉及的内存分配,接着我会以讲解Java当中的值传递问题
Java中值传递和引用传递实例
Java中值传递和引用传递实例
Java中只存在值传递,不存在引用传递
java中只有值传递,不存在引用传递。无论是传值还是传地址都属于值传递。传地址并不是引用传递。 一、传值 二、传地址
js 数组赋值问题 :值传递还是引用?
JavaScript有许多批量创建数组的方法,为了衡量它们的性能,我分别使用不同的方法创建一个长度为100000的数组,且键和值相等。同时,我定义了下面这个函数用来测量创建数组所耗费的时间: 以下为常用的几个创建数组的方法以及它们所耗费的时间: 这里用到了一个{ length: 100000 }伪数组,NodeList和arguments都是伪数组(array-like object),
Java中只有值传递,没有引用传递
先来看一个作为程序员都熟悉的值传递的例子:... ... //定义了一个改变参数值的函数 public static void changeValue(int x) { x = x *2; } ... ... //调用该函数 int num = 5; System.out.println(num); changeValue(num); System.out.println(num); ... ...
java-值传递-基本类型/对象类型
值传递: 方法调用时,实际参数把它的值传递给对应的形式参数,函数接收的是原始值的一个copy,此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值。 引用传递: 也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址; 在方法执行中,形参和实参
JAVA值传递和引用传递与栈,堆和常量池
所谓的值传递和引用传递,传递的都只是这个数据的栈中的引用的副本
java引用传递值传递的"深入"解析与c++中的值传递
Problem用过java的童鞋可能都爬过java中引用传递还是值传递的坑。不磨迹,直接上代码,看结果。public class RefVal{ public static void main(String[] args){ String st="haha"; change(st); System.out.println(st); }