易截截图软件、单文件、免安装、纯绿色、仅160KB

JAVA的参数传递机制

参数传递机制主要有两种:值调用(call-by-value),引用调用(call-by-reference)。
值调用(call-by-value):会对实在参数求值(如果是表达式)或拷贝(如果是变量)。这些值被放在属于被调用过程的响应形式参数的内存位置上。
引用调用(call-by-reference):实在参数的地址作为相应的形式参数的值被传递给被调用者。在被调用者的代码中使用形式参数时,实现方法是沿着这个指针找到调用者指明的内存位置。因此,改变形式参数就像改变了实在参数一样。C++就是用的引用调用。
看上去JAVA的调用也仿佛是引用调用,而直到最近,我才弄明白,原来JAVA是值调用的。也就是说,当JAVA程序里的实在参数是变量时(非表达式),函数会为实在参数复制一个变量给形式参数,该变量的指针与实在参数的指针一样,都指向了实在参数所对应的内存地址,即对象。而在函数内部修改形式参数所对应的对象的值的时候,其实就是修改了实在参数所指向的那个对象,也就是说他们指向同一个对象。但,假如在函数内部改变了对形式参数的引用,比如将形式参数的引用指向了另一个对象,此时函数对形式参数所指对象的修改就变成了对新对象的修改,而实际参数所指向的对象并没有改变。简单点说,就是:无论是否在函数内将形式参数的引用改变,实际参数的引用都不会改变。
JAVA编译器通过对变量引用的方式,实现了引用调用的功能,用的却是值调用,以至于当变量被传递给函数调用后,不论什么情况,该变量所指的对象不会变。
下面的程序简单地证明了以上的调用机制。
private static int[] argumentTest(int[] input){

System.out.println("here come the input's items :");
for (int i : input)
System.out.print(i + " ");
System.out.println();

input = new int[]{1,2,3};

System.out.println("the input's reference has been changed here, you can see the current input's items :");
for (int i : input)
System.out.print(i + " ");
System.out.println();

return input;
}

public static void main(String[] args) {

int[] input = new int[]{3,2,1};

int[] output = argumentTest(input);

System.out.println("the input's reference has been changed in function argumentTest,but out of the function, the input remains the same as the one before invoked by argumentTest :");


相关文档:

日期类加减及Java中日期类操作算法大全

1.计算某一月份的最大天数
1Calendar time=Calendar.getInstance();
2time.clear();
3time.set(Calendar.YEAR,year); //year 为 int
4time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0
5int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数
注:在使用set方法之前,必须 ......

Java开源项目

Spring Framework 【Java开源 J2EE框架】
  Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的 Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用I ......

jsp常见错误java.lang.ClassNotFoundException - 500

500错误,classnotfound异常,代码没有问题,数据库也没问题,打了补丁,装了驱动,但是在TOMCAT上找不到那个驱动而引发的错误。。。
解决办法:首选项设置里,MyRclipse->J2EE Project->Web Project->Deployment勾上那三个驱动。 ......

Java错误处理大集合


0、 需要标识符
a) 不在函数内
1、 非法表达式开始
b) 可能:丢失括号 .
2. no data found
a) 可能:setInt(1,100)中,没有100这个值
3. 找不到符号
a) 可能:没导入包
4. 指定了无效URL
a) 可能:数据库名或IP错误,即连接出错
5. 类路径没有找到
a) 可能: ClassNotFoundException: oracle.jdbc.driver.OracleDriv ......

JAVA中常用类的常用方法


常用类的常用方法
一、java.lang.Object类
1、clone()方法
创建并返回此对象的一个副本。要进行“ 克隆” 的对象所属的类必须实现java.lang. Cloneable接口。
2、equals(Object obj)方法
Ø   功能:比较引用类型数据的等价性。
Ø   等价标准:引用类型比较引用, ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号