Java 参数传递验证

把个人其他博客的文章慢慢搬过来,主要是能上传代码附件。

(1)Java中的基本类型比如int,bool等是值传递。
(2)对象类型则类似于C中的指针传递:
2.1当修改参数的指向时不影响函数外部的变量,其仍然指向原来的对象。
2.2但是修改参数指向的对象的成员变量时,此修改作用的对象实际上与函数外部的对象是同一个,修改被保存。

class Test{

public static void testChangeInt(int a) {

System.out.println("Old value:"+a); //Old value:5

a = ++a;

System.out.println("New value before return:"+a); //a:6。只在此函数内为6

}



public static void swap(String a, String b) {

String t;

t = a;

a = b;

b = t;

System.out.println("a New value before return:"+a); //bbbb

System.out.println("b New value before return:"+b); //aaaa。只在此函数内交换了

}



public static void appendWorld(StringBuffer sb) {

System.out.println("sb Old value:"+sb);

sb.append("world."); //改变成员变量

System.out.println("sb New value before return:"+sb); //hello world。

}



public static void main( String[] args ) {

System.out.println("Main func start.");

int ti = 5;

testChangeInt(ti);

System.out.println("New value after return:"+ti); //ti:5。不被函数改变

System.out.println("----------------------------");

String a = new String("aaaaa");

String b = new String("bbbbb");

swap(a,b);

System.out.println("a New value after return:"+a); //aaaa

System.out.println("b New value after return:"+b); //bbbb 变量指向的目标不被函数改变。

System.out.println("----------------------------");

StringBuffer sb = new StringBuffer("Hello ");

appendWorld(sb);

System.out.println("sb New value after return:"+sb.toString()); //Hello world。变量指向的目标没变,但是目标的成员变量被改变了。

System.out.println("----------------------------");

}

}



Java中的“引用”和C++中的引用的对比:

C++代码:

#include <iostream>
using namespace std;
int main(int,char**)
{
int other = 8;
int target = 5;
int& ref = target;
target = other;
cout << ref << endl;
}

输出:8. 就是当引用的目标改变了后,引用也跟着改变,所以把ref当做target的别名更容易理解,即ref就是target。

Java代码:

class Ref {
public static void main(String[] args) {
int other = 8;
int target = 5;
int ref = target;

target = other;
System.out.println("ref="+ref);
}
}


输出ref=5。即ref和target是独立的。ref指向的目标不受target的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值