在Java中,当你给方法传递一个
简单类型时,它是按值传递的。因此,接收参数的子
程序参数的改变不会影响到该方法之外。例如,看下面的程序:
// Simple types are passed by value.
class Test {
void meth(int i,int j) {
i *= 2;
j /= 2;
}
}
class CallByValue {
public static void main(String args[]) {
Test ob = new Test();
int a = 15,b = 20;
System.out.println("a and b before call: " +a + " " + b);
ob.meth(a,b);
System.out.println("a and b after call: " +a + " " + b);
}
}
该程序的输出如下所示:
a and b before call: 15 20
a and b after call: 15 20
可以看出,在meth( )内部发生的操作不影响调用中a和b的值。
当你给方法传递一个对象时,这种情形就会发生戏剧性的变化,因为对象是通过引用
传递的。记住,当你创建一个类类型的变量时,你仅仅创建了一个类的引用。因此,当你
将这个引用传递给一个方法时,接收它的参数将会指向该参数指向的同一个对象。这有力
地证明了对象是通过引用调用传递给方法的。该方法中对象的改变确实影响了作为参数的
对象。例如,考虑下面的程序:
第7 章进一步研究方法和类 117
// Objects are passed by reference.
class Test {
int a,b;
Test(int i,int j) {
a = i;
b = j;
}
// pass an object
void meth(Test o) {
o.a *= 2;
o.b /= 2;
}
}
class CallByRef {
public static void main(String args[]) {
Test ob = new Test(15,20);
System.out.println("ob.a and ob.b before call: " +
ob.a + " " + ob.b);
ob.meth(ob);
System.out.println("ob.a and ob.b after call: " +
ob.a + " " + ob.b);
}
}
该程序产生下面的输出:
ob.a and ob.b before call: 15 20
ob.a and ob.b after call: 30 10
正如你所看到的,在这个例子中,在 meth ( )中的操作影响了作为参数的对象。
有趣的一点是,当一个对象引用被传递给方法时,引用本身使用按值调用被传递。但
是,因为被传递的值指向一个对象,该值的拷贝仍然指向它相应的参数所指向的同一个对
象。
注意:当一个简单类型传递给一个方法时,使用按值传递。对象传递则按引用传
递。
补充:String 是值传递!!!
分享到:
相关推荐
主要介绍了Java中值传递和引用传递的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
抽象类与接口的区别-java中值类型和引用类型的区别.docx
在java开发中经常会遇到值类型和引用类型知识,但是有很多朋友不清楚java中值类型和引用类型的区别,今天小编通过本文给大家介绍下
1.领域:matlab,中值滤波器和自适应滤波算法 2.内容:基于中值滤波器和自适应滤波的图像去噪处理matlab仿真 +代码操作视频 3.用处:用于中值滤波器和自适应滤波算法编程学习 4.指向人群:本硕博等教研学习使用 ...
中值滤波Java实现.实现图像中值滤波。
主要给大家介绍了关于Java中值类型和引用类型的比较与问题解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
用java实现中值滤波与均值滤波,具体包括通过按钮实现对彩色图像的滤波处理。
主要给大家介绍了关于Java中值传递的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
实现下拉列表JComboBox中值和显示不同
竞赛第二讲:中值定理应用
举个单一类(不存在继承关系)的例子,在函数以值方式传递对象,并要求返回对象时,对象会调用两次拷贝构造函数,分别是在实参赋值形参和返回对象时进行调用。因为函数内部参数在内存栈中进行分配,所以当函数返回时...
我多年前想象的一个小功能:“中值式”广义过滤器。 让我们按升序对向量 X 的所有值进行排序,然后考虑元素的归一化排名位置 N: - N = 0(第一个值)对应于 X 的最小值; - N = 1(最后一个值)最大值; - N = 0.5...
用vc++实现中值滤波,是冈萨雷斯图像处理书上提到的源代码,原算法。是图像处理的入门教材
3种模糊图像去噪:中值滤波、维纳滤波和全变分去噪(matlab)源代码及文档资料,文件包含了3中模糊图像去噪的源代码和分析,是在前人的基础上总结的。直接运行即可。环境是matlab7.0 ,可供学习参考。 包含3中模糊图像...
中值过滤代码matlab 项目降噪图像 自适应中值滤波器去噪 它是根据研究论文完成的。 在这里,我们开发了两种算法: 基于MODPA的原纸。 优点是计算速度快 基于原纸的MOD2PA改进算法。 优点-PSNR比MODPA更好,但计算量...
这是加权中值滤波器,感谢 Sajid Khan 在之前版本的代码中进行更正。
均值滤波和中值滤波的内容非常基础,均值滤波相当于低通滤波,有将图像模糊化的趋势,对椒盐噪声基本无能为力。中值滤波的优点是可以很好的过滤掉椒盐噪声,缺点是易造成图像的不连续性。
高等数学公式导数公式:基本积分表:三角函数的有理式积分:一些初等函数: 两个重要...高阶导数公式——莱布尼兹(Leibniz)公式:中值定理与导数应用:曲率
中值过滤器Matlab 使用中值滤波器进行图像处理
java实现图像中值滤波