如题,请高手积极分析.
后人乘凉.

解决方案 »

  1.   

    值传递
    作为实参,该对象的引用(也就是该对象的地址)的值被复制了一份给方法的形参
    根据SUN的官方说法,也是值传递
    参见SUN的Java官方教程,最后一段Passing Reference Data Type Arguments:
    http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html
      

  2.   

    String str="hello";str这个对象的值,就是一个地址,假设是 01001011str这个对象的内容,就是 hello我有没有说错啊,请指教.
      

  3.   

    str是一个引用,是在内存的堆栈区,它指向堆里的一个String对象,即hello
      

  4.   


    这里的str不是指向常量池里的“hello”吗?如果是new出来的String对象才是在内存的堆栈区吧?
      

  5.   

    String str = "hello"; //这里的"hello"在常量池里java里只有值传递
      

  6.   

    呵呵,是的,应该是放在内存的perm区
      

  7.   

    String str="hello";
    str是一个字符串类型的引用,它的值是一个地址,仅就当前这一句话来看,是保存在栈内存中(如果str本身是一个类的成员变量,则str在该类实例化后,跟随该类的对象保存在堆中)
    "hello"是一个字符串类型的对象,保存在常量池中执行过程分析:
    1.JVM加载该类时,常量池中开辟一块空间储存"hello"这个字符串对象
    2.当线程执行到String str时,栈内存中开辟一块空间,储存str这个引用,它的值是一个地址,例如:37165f
    3.常量池中"hello"对象的地址被分配给str,既str指向常量池中的"hello"对象
      

  8.   

    LZ 懂C不  对象即引用  个人觉得其实就是C中的指针   LZ可以对照着C的指针传递内容理解下
      

  9.   

    如果是普通变量,即基本数据类型:int float double boolean char,则传递是单向的值传递,即实参变量的值复制到形参变量的值。但是形参变量和实参变量是互相独立的。如果是对象类型的,包括数组,则传递的是引用,即实参变量的引用复制到形参变量的引用,从此形参变量和实参变量就是同一个变量,它们根本就是一回事儿。
      

  10.   

    其中只有一个例外,就是形参变量是String类型的,当函数调用时,实参传递给形参,但是这两个变量是无关的,互相独立的。
      

  11.   

    这是Java中一个很特殊很重要的问题,很多公司面试都要考这个的。
      

  12.   

    看来还是我来吧!引用类型作为参数时:
    1、在修改变量本身时,结果类似于值传递,即不会改变传递前的变量的值
    2、在修改变量的属性或字段时,才是引用传递,会影响到传递前的变量的值值传递:传的是对象的值拷贝。(即函数内参数对象是调用时传递的对象的栈中对象的拷贝。)
    引用传递:传的是栈中对象的地址。(即函数内参数对象与调用时传递的对象完全是同一栈中对象。)在Java中:
    1. 基本类型和基本类型变量被当作参数传递给方法时,是值传递。在方法实体中,无法给原变量重新赋值,也无法改变它的值。
       2. 对象和引用型变量被当作参数传递给方法时,是引用传递。在方法实体中,无法给原变量重新赋值,但是可以改变它所指向对象的属性。