10 回答
TA贡献1862条经验 获得超6个赞
基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的,
在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。
String比较特殊,传的是在常量池的中的地址
TA贡献1853条经验 获得超18个赞
你的运行中 有2个String对象,全局变量的str的值一直都是2 而方法1中的是局部变量 运行到方法1的时候 只是把str的值传给了这个方法1中的局部变量 全局的str的值没变 你输出的是全局的str当然还是2了
TA贡献1810条经验 获得超4个赞
变量的作用域问题吧 你在method1()中操作的 其实是参数变量str,而非你所谓的全局变量str,如果你在method1中 str前添加this. 那么你的method2输出就为7了吧
TA贡献1827条经验 获得超7个赞
public int method1(int str){
str+=5;
return str;
你把str+=5 修改为this.str+=5,就会收到不同的结果,因为在method1中,修改的只是局部变量中的str值,不是全局变量中的str值。
TA贡献1853条经验 获得超6个赞
有点搞啊, int 类型的变量名是str, 怎么感觉怪怪的;
[code="java"]
public void method2(){
method1(str);
System.out.println(str);
}
[/code]
这里如果改成 System.out.println(method1(str));
就是楼主希望的结果了吧
添加回答
举报