java吧 关注:1,296,459贴子:12,830,762
  • 10回复贴,共1

求解 一道小面试题 不会耽误很长时间 想了好久

只看楼主收藏回复


public class Demo1 {
public static void main(String[] args) {
String str="hello";
char [] c={'h','e','l','l','o'};
Demo1 d=new Demo1();
d.exchange(str, c);
System.out.println(str+",");
System.out.println(c);}
public void exchange(String str,char []c){str="world";c[0]='q';}}
结果怎么是hello 和qello
好惆怅


IP属地:北京1楼2013-08-28 13:02回复
    就是这个结果,数组的元素变了,str指向为返回,任然是hello


    IP属地:陕西来自Android客户端2楼2013-08-28 13:07
    收起回复
      2026-01-31 21:31:30
      广告
      不感兴趣
      开通SVIP免广告


      IP属地:北京来自Android客户端3楼2013-08-28 13:41
      回复
        你不要 把里面的 str 和 外面的 str 混为一谈
        里面是个 临时变量 str, str = "world"把 临时变量str 的引用 由 "hello" 重新赋值变成了 "world"


        IP属地:广东4楼2013-08-28 13:44
        收起回复
          可以查下JDK API,明确说明了String实例化后,里面的值不能更改,里面你实际上又创建了一个新的对象,和外面的没关系。。。


          来自Android客户端5楼2013-08-28 14:13
          回复
            就是这句话


            来自Android客户端6楼2013-08-28 14:21
            回复
              ....形参和 实参数


              IP属地:湖北7楼2013-08-28 14:28
              回复