一个java问题 值传递的

问题描述

一个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 求指导

解决方案

解决方案二:

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

解决方案三:

java值传递问题
java的值传递问题
关于java中的值传递问题

解决方案四:

数组是引用传址,这传值

解决方案五:

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

时间: 2024-11-17 10:02:38

一个java问题 值传递的的相关文章

java类的问题-JAVA 实例化值传递的问题

问题描述 JAVA 实例化值传递的问题 我有一个类 character另一个类 UI1 与继承自UI1的子类UI2我在UI1 里实例化了 character c=new character():,并用set方法进行了初始化 但子类 通过父类实例化的 c 进行 get set 都是得不到通过UI1初始化后的值,why? 解决方案 楼主可能把子类父类的概念与接口与实现类的概念搞混了.你用set方法赋值之后只有c实例里面的属性改变了,不会传递到别的地方.在UI2中你再创建一个c,这个c和UI1里的c在

java的值传递和引用传递

java的值传递和引用传递 1. "="是赋值操作. 任何包含=的如+=.-=. /=等等,都内含了赋值操作. 不再是你以前理解的数学含义了,而+ - * /和 = 在java中更不是一个级别,换句话说, = 是一个动作,一个可以改变内存状态的操作,一个可以改变变量的符号,而+ - * /却不会. 这里的赋值操作其实是包含了两个意思: 1.放弃了原有的值或引用: 2.得到了 = 右侧变量的值或引用.Java中对 = 的理解很重要啊!!可惜好多人忽略了,或者理解了却没深思过. 2. 对于

一个关于Java的值传递的问题

问题描述 Java中的类的变量不是都是引用么代码无法使用,但是各位应该看得出我想做什么.classlink{classnode//节点类{intdata;nodenext;node(intd){data=d;}}noderoot;//链表头publicvoidadd(noderoot,intdata)//添加节点{if(root==null){root=newnode(data);}else{add(root.next,data);}}//这样的写法有什么问题呢?比如//linka=newlin

java只有值传递,不存在引用传递

今天,我在一本面试书上看到了关于java的一个参数传递的问题: 写道 java中对象作为参数传递给一个方法,到底是值传递,还是引用传递?  我毫无疑问的回答:"引用传递!",并且还觉得自己对java的这一特性很是熟悉! 结果发现,我错了! 答案是: 值传递!Java中只有按值传递,没有按引用传递!   回家后我就迫不及待地查询了这个问题,觉得自己对java这么基础的问题都搞错实在太丢人!   综合网上的描述,我大概了解了是怎么回事,现在整理如下,如有不对之处望大神提出!   先来看一个

【java】值传递和引用传递---对象作为方法的参数传入属于哪种传递

首先 这篇作为一个永久性的问题,欢迎大家讨论 其次,个人结论如下几条: ①Java有且只有一种传递,即 值传递 ②作为方法的参数传入,都是对原本的实参进行了copy ③只不过[实参]若是[基本数据类型]的话,就是对[实参]的[字面值]进行了copy ④如果[实参]是[引用数据类型]的话,就是对[实参]的[数值的引用地址值]进行了copy 最后,解释一下题目的[对象作为方法的参数传入属于哪种传递], 1>根据上述第一条,确认是值传递 2>解释上面第四条,同时解释为什么是值传递 对象[类]属于引用

对象-java传递 ”值传递和引用传递“还是全部 “值传递”

问题描述 java传递 "值传递和引用传递"还是全部 "值传递" 若说值传递.基本类型是copy的值赋给形参,对象是把 堆中对象的 地址 传给 形参. 若说分为值传递和引用传递..引用传递 是因为这个传的地址,导致实参和形参 操作的都是同一块内存. 有点乱,像文字层次上的撕逼.. 若往引用传递方面思考,C++的指针又把我搅乱了.,java里不能直接管理内存,传递的不是 变量本身 的栈地址.而是变量的内容(值) 解决方案 java没有什么值传递引用传递,都是传递对象引

代码-js怎么把值传递到后台

问题描述 js怎么把值传递到后台 <script type="text/javascript"> var cha = 10; function chongChouQu() { window.location = "suiJi.action"; } function checkChecked() { var ipts = document.getElementById('tableid').getElementsByTagName('input'), ch

值传递-帮我看看这段话有没有错????

问题描述 帮我看看这段话有没有错???? 21这里 这为什么不算是引用传递,不是改变值了吗 解决方案 对象中属性的改变不会改变对象指向的地址. 引用传递可以与C++等指针传递去比较. 解决方案二: 他是针对java而言的,像c#,就是引用 解决方案三: 我觉得没错啊,java中的引用就是一个地址,地址是系统分配的,当然不能改变了,或者可以用c取指针赋值一下,地址指向的空间就是值,值是可以改变的, 还有上面有一个说错了,基本数据类型不是对象,也没有属性 解决方案四: java只有值传递,将对象传给

深入分析C++ 值传递、指针传递、引用传递

而关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~ 指针与引用的相同点与不同点: ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. ★ 区别: 1. 指针是一个实体,而引用仅是个别名: 2. 引用使用时无需解引用(*),指针需要解引用: 3. 引用只能在定义时被初始化一次,之后不可变:指针可变: 引用"从一而终" ^_^ 4. 引用没有 const,指针有 const,const 的指针不