java程序
packagemyduixiang;publicclassPassTest{floatptValue;publicvoidchangeInt(intvalue){//定义...
package myduixiang;
public class PassTest {
float ptValue;
public void changeInt(int value){
//定义方法时有void
value=55;
}
public void changeStr(String value){
value=new String("different");
}
public void changeObjValue(PassTest ref){
ref.ptValue=99.0f;
}
public static void main(String args[]){
int val;
String str;
PassTest pt=new PassTest();
val=11;
pt.changeInt(val);
//val要有值才可以执行
System.out.println("int value is "+val);
str=new String("hello");
pt.changeStr(str);
System.out.println("str value is "+str);
pt.changeObjValue(pt);
System.out.println("currrent ptValue is "+pt.ptValue );
}
}
这个运行结果为int value is 11
str value is hello
currrent ptValue is 99.0
求大神告知为什么Int的值为11,而不是55? 展开
public class PassTest {
float ptValue;
public void changeInt(int value){
//定义方法时有void
value=55;
}
public void changeStr(String value){
value=new String("different");
}
public void changeObjValue(PassTest ref){
ref.ptValue=99.0f;
}
public static void main(String args[]){
int val;
String str;
PassTest pt=new PassTest();
val=11;
pt.changeInt(val);
//val要有值才可以执行
System.out.println("int value is "+val);
str=new String("hello");
pt.changeStr(str);
System.out.println("str value is "+str);
pt.changeObjValue(pt);
System.out.println("currrent ptValue is "+pt.ptValue );
}
}
这个运行结果为int value is 11
str value is hello
currrent ptValue is 99.0
求大神告知为什么Int的值为11,而不是55? 展开
5个回答
展开全部
楼主您好,现在基本上大家都叫“值传递”。但理解还是可以分开理解
基本类型,可以理解为真正意义上的值传递
传过去就传过去了 和我无干了。。。所以11(基本类型)传过去了,本方法还是11!
对象传递可以理解为引用传递(其实传递的是引用的值,另一种值传递)。传递的是引用(指针?)所以对象传递过去后,在传递方法中修改了属性值,主方法中同样修改了。
string比较特殊,它不是基本类型,但它同样有类似基本类型的值传递
基本类型,可以理解为真正意义上的值传递
传过去就传过去了 和我无干了。。。所以11(基本类型)传过去了,本方法还是11!
对象传递可以理解为引用传递(其实传递的是引用的值,另一种值传递)。传递的是引用(指针?)所以对象传递过去后,在传递方法中修改了属性值,主方法中同样修改了。
string比较特殊,它不是基本类型,但它同样有类似基本类型的值传递
更多追问追答
追问
请问一下大神,怎么改才能使Int的值输出55?
追答
你都采纳了个完全错误的答案,我真是无语了。
展开全部
System.out.println("int value is "+val);这里的val是指main方法中的局部变量。
public void changeInt(int value)中value是方法chageInt的局部变量。局部变量值改变时只会影响它自身作用域。
当你调用pt.changeInt(val);时 value指向了val对应的值,即11,当方法执行到value=55;时value指向了值55,并不会影响main方法中的val。
public void changeInt(int value)中value是方法chageInt的局部变量。局部变量值改变时只会影响它自身作用域。
当你调用pt.changeInt(val);时 value指向了val对应的值,即11,当方法执行到value=55;时value指向了值55,并不会影响main方法中的val。
追问
请问一下我该怎么改才能使Int的值为55?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-12-08 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
public void changeInt(int value){
//定义方法时有void
value=55;
}
这个地方的value要定义成全局的,比如是private String value
public void changeInt(int value){
//定义方法时有void
this.value=55;
}
这样就可以了。
//定义方法时有void
value=55;
}
这个地方的value要定义成全局的,比如是private String value
public void changeInt(int value){
//定义方法时有void
this.value=55;
}
这样就可以了。
追问
谢谢!我学到了!
追答
麻烦采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
pt.changeInt(val)调用这个方法是把value的值改变了,但是你输出的是val,他两个根本不是一个变量,当然是输出11
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询