我们知道,java中定义变量的目的有两个:

1.防止被垃圾回收机制回收,毕竟如果没有明确指向真实物理内存的'代号'很大可能会被java垃圾回收机制当作垃圾回收。

2.便于引用,方便处理。

 package testp1;

 public class Test01 {
public static void replace1(int a){
a = 10;
}
public static int replace2(int a){
a = 10;
return a;
}
public static void replace3(String s){
s = "a";
}
public static String replace4(String s){
s = "a";
return s;
} public static void main(String[] args) {
int a = 0;
replace1(a);
System.out.println("in replace1:a="+a);
a = replace2(a);
System.out.println("in replace2:a="+a);
String s = "make";
replace3(s);
System.out.println("in replace3:s="+s);
s=replace4(s);
System.out.println("in replace4:s="+s);
}
}

局部变量和外部变量

在上述代码的replace1中,形参a为基本数据类型,它指向的是数字10所在的物理内存,调用该方法后并没有改变外部变量a所指向的物理地址。就会出现输出没改变变量值的结果,但是如果调用了int返回类型的方法replace2后我们发现它的值改变了,是因为我们把内部变量指向的物理地址赋值给了外部变量a,在返回值为void的引用数据类型的方法replace3中,方法的结果就是该形式参数所引用的对象a,同样只在该方法内部起作用,出了该方法,变量还是原来的引用对象,在返回类型为String的类型中,我们又让外部变量指向对象a所在的物理内存,其值当然会变化。

java关于方法参数传递的相关问题讨论的更多相关文章

  1. 有关java调用方法参数传递的分析

    这个问题好多文章都讲过了,在此本人补充一下,加深理解,有不足之处请指教. 相信做java开发同学们都知道,调用方法传递参数时,不论是基本类还是引用类型, java都是值传递,不存在引用传递(称引用传递 ...

  2. 新手容易混乱的String+和StringBuffer,以及Java的方法参数传递方式。

    之前在交流群里和猿友们讨论string+和stringbuffer哪个速度快以及Java的方法参数传递的问题,引起了群里猿友的小讨论.最终LZ得出的结果是string+没有stringbuffer快, ...

  3. java中方法的参数传递机制

    问:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?  答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为一个 ...

  4. 【Java基础】12、java中方法的参数传递机制

    问:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?  答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为一个 ...

  5. Java的cmd配置(也即Java的JDK配置及相关常用命令)——找不到或无法加载主类 的解决方法

    Java的cmd配置(也即Java的JDK配置及相关常用命令) ——找不到或无法加载主类  的解决方法 这段时间一直纠结于cmd下Java无法编译运行的问题.主要问题描述如下: javac 命令可以正 ...

  6. 深入理解Java中方法的参数传递机制

    形参和实参 我们知道,在Java中定义方法时,是可以定义参数的,比如: public static void main(String[] args){ } 这里的args就是一个字符串数组类型的参数. ...

  7. 几种任务调度的 Java 实现方法与比较

    综观目前的 Web 应用,多数应用都具备任务调度的功能.本文由浅入深介绍了几种任务调度的 Java 实现方法,包括 Timer,Scheduler, Quartz 以及 JCron Tab,并对其优缺 ...

  8. JAVA本地方法详解,什么是JAVA本地方法?

    一. 什么是Native Method   简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由非j ...

  9. String作为方法参数传递 与 引用传递

    String作为方法参数传递 String 和 StringBuffer的区别见这里: http://wenku.baidu.com/view/bb670f2abd64783e09122bcd.htm ...

随机推荐

  1. oracle rac常用的网络检查命令

    oracle的集群管理软件和数据库对私网依赖性很大,很多集群问题最后都可以归结到网络层面. 当集群出现问题时检查网络信息是必要的. 1.查看MTU的大小,确认所有节点的公网和私网网卡的MTU大小相同 ...

  2. Python序列——列表

    列表是什么 1 创建列表 2 访问列表和更新列表 列表相关操作 内建函数对列表的支持 1 cmp 2 序列类型函数 列表内建函数 列表应用 1 堆栈 2 队列 1. 列表是什么 列表也是序列的一种.列 ...

  3. UVA1482 Playing With Stones —— SG博弈

    题目链接:https://vjudge.net/problem/UVA-1482 题意: 有n堆石子, 每堆石子有ai(ai<=1e18).两个人轮流取石子,要求每次只能从一堆石子中抽取不多于一 ...

  4. 小程序observer函数的应用

    需求是这样的 就是构建月份的组件中,月份小于10月的时候 显示的数字都是一个位数,需要转换成两位数, 比如8月份是8 ,那就要转换为08 ,同理可得 其他低于十月份的月份也是要这样做: 打开组件的js ...

  5. uva 401 Palindromes 解题报告

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  6. 存储过程系列五:完整的存储过程备份使用函数REPLACE()substr()

    CREATE OR REPLACE PROCEDURE "YLQXSCXKESL_GGXKZ_TO_QB" (                                    ...

  7. Unable to resolve target 'android-16'

    Just now when I imported the "android-support-v7-appcompat" to ADT,the console pointed out ...

  8. java中的异常The given object has a null identifier

    修改页面点击提交时报如下异常: org.hibernate.TransientObjectException: The given object has a null identifier: com. ...

  9. POJ1904(有向图缩点+输入输出挂参考)

    King's Quest Time Limit: 15000MS   Memory Limit: 65536K Total Submissions: 8311   Accepted: 3017 Cas ...

  10. 确认框的使用。弹出一个确认框,Ajax提交一个请求,刷新页面。

    视图: <td> @if (item.ReviewProject.DeclareState == DeclareOrReviewState.正在进行 && !item.Is ...