当前位置:  技术问答>java相关

送分了!!!!!!!!!

    来源: 互联网  发布时间:2015-01-17

    本文导语:  import java.lang.*; public class asa {    public static void main(String args[])    {          String str=new String("World");       char ch[]={'H','e','l','l','o'};       change(str,ch);       System.out.println(str + "and" + ch);   ...

import java.lang.*;

public class asa
{
   public static void main(String args[])
   {   
      String str=new String("World");
      char ch[]={'H','e','l','l','o'};
      change(str,ch);
      System.out.println(str + "and" + ch);
      
   }
   
   public static void change(String str, char ch[])
   {   
      str="Changed"; 
      ch[0]='C';
      
   }
   

}

为什么ch被改变,而str没被改变?


|
Java认为String是传值调用,而数组是引用调用。
传值调用时实际上系统是复制了另一个对象,而引用调用会改变被引用的对象的值。

|
str这个引用值是作为 形参 传进来的,函数内部对这个值的改变不影响外部。
str="Changed"; 赋予str一个新的引用值,但这只在函数内部起作用。

换句话说,参数str 其实是原引用值的一个拷贝

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3