在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的值。它们的值没在本例中没有变为30和10。
当你给方法传递一个对象时,这种情形就会发生戏剧性的变化,因为对象是通过引用传递的。记住,当你创建一个类类型的变量时,你仅仅创建了一个类的引用。因此,当你将这个引用传递给一个方法时,接收它的参数将会指向该参数指向的同一个对象。这有力地证明了对象是通过引用调用传递给方法的。该方法中对象的改变确实影响了作为参数的对象。例如,考虑下面的程序:
// 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 ( ) 中的操作影响了作为参数的对象。
有趣的一点是,当一个对象引用被传递给方法时,引用本身使用按值调用被传递。
分享到:
相关推荐
java调用shell 包含简单的编写shell文件 调用含有参数的shell文件
ASP JAVA 动态参数传递 实现动态网页
Jni中C++和Java的参数传递如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章:利用VC++6.0实现JNI的最简单的...
内容概要: 本文详细介绍了Java中的参数传递概念。...建议通过编写简单的Java程序,并使用不同的参数传递方式来验证理论和加深理解。 如有疑问,可以参考Java官方文档或搜索相关资料,进一步扩展学习。
内容概要: 本文进一步介绍了Java中的参数传递概念。...建议通过编写简单的Java程序,并使用不同的参数传递方式来验证理论和加深理解。 如有疑问,可以参考Java官方文档或搜索相关资料,进一步扩展学习。
java中两种方式调用其他.exe可执行程序
参数传递是Java语言中函数调用的重要步骤,清楚地了解参数传递的过程是编写出高质量程序所必须的.大多数程序设计语言具有传值调用和传引用调用的两种方法.通过对典型程序的研究与分析可以看出JAVA语言的参数传递总是...
Java程序的参数传递及项目打包成JAR文件(以内部类为例)
专业(specialty)和封装name属性的方法:setName(),getName(),getspecialty()编写Application,创建一个学生对象,设置name和age属性值,然后调用一个方法(此方法将对象作为参数传递,在方法中打印出学生的名字...
185 9.3.2 Applet参数的读取 186 9.3.3 Applet与URL 187 9.4 在Applet中的多媒体处理 188 9.4.1 在Applet中显示图像 188 9.4.2 在Applet中播放声音 189 9.5 Applet的事件处理 189 习题 191 第10章 ...
有几个程序的代码,主要是关于将Java程序写到.bat文件中双击后直接运行
试根据html文件中提供的参数,编写一个计算矩形面积和周长的Java Applet程序,并把计算结果显示在APPLET窗口中。
一些JavaApplet小程序应用源码例子集,包括小应用程序与应用程序组合、在Applet中弹出窗口、通过HTML文件向Applet传递参数、swing的使用等。
参数传递是Jave程序设计中方法调用的重要步骤,清楚地了解参数传递的过程是编写出高质量程序所必需的。本文将介绍在java中基本数据类型作为方法的参数和对象作为方法的参数是如何传递的。
Java实用程序设计100例
高校java初级入门教学资源。熟悉并设置JDK path 路径 熟悉eclipse开发环境。 要求同学们在开发环境中,创建一个以姓名和学号命名的...编写一个Java应用程序,应用程序输出结果为:Hello 张三 编写一个applet小应用程序
在页面的url中使用encodeURI(encodeURI(中文)),对中文进行编码,并在服务器的java程序中使用URLDecoder.decode(中文, “UTF-8”)进行解码即可; 如果url中需要传递+、#、?等特殊符号,可以使用encodeURIComponent...
java后台获取小程序用户信息和生成自定义token,并使用filter过滤header的token源码.