当一个对象被当作参数传递到一个方法中,是何种传递 如题,请高手积极分析.后人乘凉. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 值传递作为实参,该对象的引用(也就是该对象的地址)的值被复制了一份给方法的形参根据SUN的官方说法,也是值传递参见SUN的Java官方教程,最后一段Passing Reference Data Type Arguments:http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html String str="hello";str这个对象的值,就是一个地址,假设是 01001011str这个对象的内容,就是 hello我有没有说错啊,请指教. str是一个引用,是在内存的堆栈区,它指向堆里的一个String对象,即hello 这里的str不是指向常量池里的“hello”吗?如果是new出来的String对象才是在内存的堆栈区吧? String str = "hello"; //这里的"hello"在常量池里java里只有值传递 呵呵,是的,应该是放在内存的perm区 String str="hello";str是一个字符串类型的引用,它的值是一个地址,仅就当前这一句话来看,是保存在栈内存中(如果str本身是一个类的成员变量,则str在该类实例化后,跟随该类的对象保存在堆中)"hello"是一个字符串类型的对象,保存在常量池中执行过程分析:1.JVM加载该类时,常量池中开辟一块空间储存"hello"这个字符串对象2.当线程执行到String str时,栈内存中开辟一块空间,储存str这个引用,它的值是一个地址,例如:37165f3.常量池中"hello"对象的地址被分配给str,既str指向常量池中的"hello"对象 LZ 懂C不 对象即引用 个人觉得其实就是C中的指针 LZ可以对照着C的指针传递内容理解下 如果是普通变量,即基本数据类型:int float double boolean char,则传递是单向的值传递,即实参变量的值复制到形参变量的值。但是形参变量和实参变量是互相独立的。如果是对象类型的,包括数组,则传递的是引用,即实参变量的引用复制到形参变量的引用,从此形参变量和实参变量就是同一个变量,它们根本就是一回事儿。 其中只有一个例外,就是形参变量是String类型的,当函数调用时,实参传递给形参,但是这两个变量是无关的,互相独立的。 这是Java中一个很特殊很重要的问题,很多公司面试都要考这个的。 看来还是我来吧!引用类型作为参数时:1、在修改变量本身时,结果类似于值传递,即不会改变传递前的变量的值2、在修改变量的属性或字段时,才是引用传递,会影响到传递前的变量的值值传递:传的是对象的值拷贝。(即函数内参数对象是调用时传递的对象的栈中对象的拷贝。)引用传递:传的是栈中对象的地址。(即函数内参数对象与调用时传递的对象完全是同一栈中对象。)在Java中:1. 基本类型和基本类型变量被当作参数传递给方法时,是值传递。在方法实体中,无法给原变量重新赋值,也无法改变它的值。 2. 对象和引用型变量被当作参数传递给方法时,是引用传递。在方法实体中,无法给原变量重新赋值,但是可以改变它所指向对象的属性。 关于Properties类的测试? 求助正则高手,如何判断一行文字是否是html的注释 请教:如何知道一个字符的ASC码 n! 线程挂起唤醒问题,在线等待,急死了 【急!高分求助】关于JAVA混淆器的使用的问题 急,放在byte[]中的unicode怎么转然换成GB2312? 参与者给分!一个访问sqlserver2000的问题,有意者请近!! 如何在win2000 Server版中配置jdk1.3开发包,谢谢指教! java 解压gz文件 JTextPane中行距的问题 从数组里获得随机数的问题
作为实参,该对象的引用(也就是该对象的地址)的值被复制了一份给方法的形参
根据SUN的官方说法,也是值传递
参见SUN的Java官方教程,最后一段Passing Reference Data Type Arguments:
http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html
这里的str不是指向常量池里的“hello”吗?如果是new出来的String对象才是在内存的堆栈区吧?
str是一个字符串类型的引用,它的值是一个地址,仅就当前这一句话来看,是保存在栈内存中(如果str本身是一个类的成员变量,则str在该类实例化后,跟随该类的对象保存在堆中)
"hello"是一个字符串类型的对象,保存在常量池中执行过程分析:
1.JVM加载该类时,常量池中开辟一块空间储存"hello"这个字符串对象
2.当线程执行到String str时,栈内存中开辟一块空间,储存str这个引用,它的值是一个地址,例如:37165f
3.常量池中"hello"对象的地址被分配给str,既str指向常量池中的"hello"对象
1、在修改变量本身时,结果类似于值传递,即不会改变传递前的变量的值
2、在修改变量的属性或字段时,才是引用传递,会影响到传递前的变量的值值传递:传的是对象的值拷贝。(即函数内参数对象是调用时传递的对象的栈中对象的拷贝。)
引用传递:传的是栈中对象的地址。(即函数内参数对象与调用时传递的对象完全是同一栈中对象。)在Java中:
1. 基本类型和基本类型变量被当作参数传递给方法时,是值传递。在方法实体中,无法给原变量重新赋值,也无法改变它的值。
2. 对象和引用型变量被当作参数传递给方法时,是引用传递。在方法实体中,无法给原变量重新赋值,但是可以改变它所指向对象的属性。