java中对象的参数传递都是引用传递?
java中对象的参数传递都是引用传递嘛?没有值传递嘛?能不能给个比较系统的回答,谢谢拉。呵呵。这个搞不是很明白
------解决方案--------------------4类8种是值传递,其他的都是 引用的
逻辑型
boolean
字符型
char
整形
byte
short
int
long
实数型 浮点型
float
double
------解决方案--------------------可以说是值传递也可以说是引用传递,要看个人对这两个概念怎么理解
public class NewTest {
public static void main(String args[]){
Hello hello = new Hello(4);
changeHello1(hello);
System.out.println( "Hello.i= " + hello.getI());
hello = new Hello(4);
changeHello2(hello);
System.out.println( "Hello.i= " + hello.getI());
}
public static void changeHello1(Hello hello){
hello.setI(3);
}
public static void changeHello2(Hello hello){
hello = new Hello(2);
}
}
class Hello{
private int i = 0;
public Hello(int i){
this.i = i;
}
public void setI(int i){
this.i = i;
}
public int getI(){
return i;
}
}
上面的程序结果是什么?如果你能正确回答,那么你已经知道你的问题的答案了
------解决方案--------------------关注
------解决方案--------------------java 核心技术里面说得很清楚了
方法参数共有两种:基本类型和对象引用
1.方法不能修改基本类型(即数字或布尔值)的参数
2.方法可以修改对象参数的状态
3.方法不能让对象参数指向新的对象
------解决方案--------------------可以说java中的传递都是值传递,这个值指的是参数地址的值。不过也有说基本类型和String是值传递,其他的都是引用传递,还是看个人理解了,这个很多书里面都有论述,好像这两种观点都有提及,^_^
------解决方案--------------------一楼回答很清楚了,8类基本类型值传递
其他都引用传递
String类的想不清楚再好好想想
------解决方案--------------------可以看成都是值传递,如果是对象类型,其实是传递的引用的副本,比如:
函数:change(A c){
c=new A();
}
A a=new A();
change(a);
传给change函数的是引用a的副本,所以在函数里改掉a指向的对象以后,并不影像函数外引用a的值,在函数退出后,引用a还是以前的值
------解决方案--------------------LS的说错了吧,change(a);后a的值应该是被改变后的值,方法参数中传递的是对象引用的副本而不是值的副本,也就是说只是传递堆中的拷贝而不是栈中的
------解决方案--------------------java中 只有两种传递方式,即值传递和引用传递。
所有基本数据类型都是采用值传递的方式,而所有对象都是采用引用传递的方式,包括数组
------解决方案--------------------java:是有两种参数传递,但java只有值传递,没有引用传递。。即便:发生引用传递,那java也会把引用传递变成值传递,传出去。
------解决方案--------------------java只有值传递
------解决方案--------------------一般传递的都是值传递
但值本身可能是值参数或引用参数
不过不清楚java的闭包是怎么样的
------解决方案--------------------汗了,不同的人有不同的理解啊
我的理解 2楼的理解跟我一样
java中凡是对象传递的都是对象的引用,而8种基本类型是java为了方便程序设计而引进的,他们是值传递,他们都有对应的类的,如int-----Integer类
------解决方案--------------------Java全是值传递.参考java核心技术上卷.
------解决方案--------------------楼上的例子不好!
要是这样呢:
public class Test {
String change(String a){
a=new String( "abc ");
return a;
}
/**
* @param args
*/
public static void main(String[] args) {
Test t=new Test();
String s=new String( "ddd ");