java 传递string面试题_java方法参数传递面试题

传值还是传引用是Java中很基础的一个问题,也是笔试的时候经常被考察的一个问题,总结一下。

题目1: 写出以下程序的输出内容。

public classTest {public static void changeValue(intvalue){

value= 0;

}public static voidmain(String[] args) {int value = 2010;

changeValue(value);

System.out.println(value);

}

}

求输出结果。

答案:

2010

这个题目考察了java方法的参数传递问题。java中方法的参数传递为值传递,不管这个参数是基本类型还是引用类型,我们传递过去的都是该值的一个副本,这个副本作为方法的局部变量保存在栈(stack)中。

对于上面的 changeValue() 方法,传递进来的是变量 value 的一个副本,在 changeValue() 方法中修改的只是该方法的一个局部变量,不会影响作为参数传进来的那个变量,两者井水不犯河水。

题目2: 写出以下程序的输出内容。

public classTest {public static voidchangList(List list){

list.add("bbb");

}public static voidmain(String[] args) {

List list= newArrayList();

list.add("aaa");

changList(list);

System.out.println(list.size());

}

}

答案:

2

说明:

main()方法在调用changeList()方法的时候,changList()方法中的list变量是main()方法list变量的副本,这两个list变量都指向heap中的同一ArrayList对象,因此操作的也是同一对象。

题目3:写出以下程序的输出内容。

public classTest {public static voidchangString(String str){

str= str + "bbb";

}public static voidmain(String[] args) {

String str= "aaa";

changeString(str);

System.out.println(str);

}

}

答案:

aaa

说明:

changString()方法仅仅使本地变量str指向了一个全新的字符串对象”aaabbb”,对main()方法中的str变量没有任何影响。

对java方法参数传递的总结:

基础数据类型(int,char,……)传值,对象类型(Object,数组,容器……)传引用。

有说java方法参数都是传值的,理解方式不同而已。引用本身也是值(对象地址)。

传值方式,传递的是值的副本。方法中对副本的修改,不会影响到调用方。

传引用方式,传递的是引用的副本。此时,形参和实参指向同一个内存地址。对引用副本所指向的对象的修改,如修改对象属性、容器内容等,会影响到调用方。对引用副本本身(对象地址)的修改,如设置为null,重新指向其他对象,不会影响到调用方。

只要知道传引用时,也是传递的引用的副本,就比较容易理解了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值