java中有关参数传递的问题
2015-10-22 09:54
603 查看
首先声明,本人是菜鸟,基础很一般,所以可能有不少地方理解的不到位甚至错误,如有不对地方,还请各位多多批评指出!
简单来说java中所有的参数传递的都是值,比如基本数据(int,double,char等)类型的传递是数值(将“实参”的值的复制传递给“形参”),所以在方法体中改变有关参数的值并不会改变“实参”的值。类似的如果“实参”传递的是对象,就将“实参”的值复制给“形参”,即此时实参和形参是两个不同的变量,但是它们此时引用的是同一个对象。因此如果想要改变“实参”的值,通过基本数据类型的数值传递在java中是不能实现的,只能通过传递对象来实现。具体可以见下面的例子。public
public class Test_1{
简单来说java中所有的参数传递的都是值,比如基本数据(int,double,char等)类型的传递是数值(将“实参”的值的复制传递给“形参”),所以在方法体中改变有关参数的值并不会改变“实参”的值。类似的如果“实参”传递的是对象,就将“实参”的值复制给“形参”,即此时实参和形参是两个不同的变量,但是它们此时引用的是同一个对象。因此如果想要改变“实参”的值,通过基本数据类型的数值传递在java中是不能实现的,只能通过传递对象来实现。具体可以见下面的例子。public
public class Test_1{
static void change(Test one,Test two){ int c; c=one.a; one.a=two.a; two.a=c; /* 此法不可行,因为主函数中对象的引用无法改变,以下代码改变的只是change 函数 中的对象的引用,对主函数中对象的引用没有影响。 Test c; c=one; one=two; two=c; */ } public static void main(String args[]){ Test one=new Test(5); Test two=new Test(8); System.out.println("交换前one中a的值为:"+one.get()+",two中b的值为:"+two.get()); change(one,two); System.out.println("交换后one中a的值为:"+one.get()+",two中b的值为:"+two.get()); } } class Test{ int a; Test(int a){ this.a=a; } public int get(){ return a; } }
相关文章推荐
- Java 加密 base64 encode
- Java byte[] 字节数组 转 二进制 八进制 十进制 十六进制字符串
- Java中byte与16进制字符串的互相转换
- Struts2面试题
- Java 读写文件
- JAVA List 方法总结
- Eclipse 在开发中使用到的快捷键很实用噢(转载)
- Eclipse is running in a JRE, but a JDK is required 解决方法
- 【Java基础】Java中的多态
- Spring Security3 - MVC 整合教程 (初识Spring Security3)
- MyEclipse项目有红色感叹号
- eclipse报jvm terminated.exitcode=2异常解决办法
- spring_ThreadPoolTaskExecutor和jdk1_7_ThreadPoolExecutor原理解析
- java动态代理(JDK和cglib)
- Eclipse安装SVN插件
- spring 数据库
- mamcached与Hibernate、Spring集成,以及junit单元测试
- Java中equals与==的区别(全面)
- Spring异步执行(@Async)2点注意事项
- Spring异步执行(@Async)2点注意事项