java传参
来源:互联网 发布:centos安装aptget命令 编辑:程序博客网 时间:2024/06/04 22:47
java的传参是按值传参(我现在的理解)
1、基本数据类型作为变量(变量的复制品);
所以要改变要像c/c++那样可写一个可以交换基本类型变量值的函数在java中要费劲的多。
2、对象引用作为参数,其实传入的也只是对象的引用的复制品(不是对象的复制品),本质上还是按值传参,但是这些应用的复制品不管有多少个,总之还是指向同一个对象。除非你把它指向另外的对象或者置为null,否则你通过引用操纵对象成员一定能够改变对象的内容。假如大家不理解,可以看我下面的例子:
class Test
{
public static void main(String args[])
{
int val;
StringBuffer sb1, sb2;
val = 10;
sb1 = new StringBuffer("apples");
sb2 = new StringBuffer("pears");
System.out.println("val is " + val);
System.out.println("sb1 is " + sb1);
System.out.println("sb2 is " + sb2);
System.out.println("***********************");
System.out.println("calling modify");
//按值传递所有参数
modify(val, sb1, sb2);
System.out.println("returned from modify");
System.out.println("***********************");
System.out.println("val is " + val);
System.out.println("sb1 is " + sb1);
System.out.println("sb2 is " + sb2);
}
public static void modify(int a, StringBuffer r1,StringBuffer r2)
{
a = 0; //基本变量还是按值传递
r1 = r2; //引用一样是按值传递,其作用域是有限制的,不是把r2的地址给r1,赋予的只是一个引用变量。
r2.append(" taste good");//操纵原对象的值。
r1=r2;
System.out.println("方法中a is " + a);
System.out.println("方法中r1 is " + r1);
System.out.println("方法中r2 is " + r2);
}
}
结果:
val is 10
sb1 is apples
sb2 is pears
***********************
calling modify
方法中a is 0
方法中r1 is pears taste good
方法中r2 is pears taste good
returned from modify
***********************
val is 10
sb1 is apples
sb2 is pears taste good
3、要注意String类型以及所有的基本类型的Wrrapper类有特殊情况,他们的引用改变不了他们所指向的对象的值。因为他们是IMMUTABLE类。只有将改变后的对象作为返回值才能得到改变后的对象。
- java传参
- Java 传参
- java 传参
- Java传参
- JAVA传参
- Java web 传参
- java url 传参 编码
- 详细解释Java传参
- 理解Java传参
- 深入分析java传参
- java
- JAVA
- JAVA
- JAVA
- java
- Java
- Java
- JAVA:
- 鼠标经过图片加亮显示
- Busybox制作嵌入式Linux的文件系统
- 用JavaScript操作cookie
- C++的学习方法及书籍推荐
- 如何学习Hibernate
- java传参
- 剖析VC中的文件操作
- 任正非与李一男的悲喜剧
- 通过数据库生成多级树
- What It Takes To Make a Student?
- HTC基础
- 搜索引擎原理
- 再探完成端口
- CSDN Blog十大常用小技巧