java函数怎样传值
publicclasst4{Strings="aa";publicstaticvoidmain(String[]args){t4t=newt4();t.add(t.s);...
public class t4 {
String s="aa";
public static void main(String[] args) {
t4 t=new t4();
t.add(t.s);
System.out.println(t.s);
}
private void add(String s) {
s=s+"b";
System.out.println(s);
}
}
为什么结果还是aa,我觉得应该是aab啊,Java是传递是引用,那么s获得了t.s的引用,那么s和t.s指向同一个java对象,所以应该是aab。
我还想问一下int等基本数据类型他们不是类么?那Integer呢,为什么我用Integer来创建的对象还是改不了原来的数字?
大神求救。。 展开
String s="aa";
public static void main(String[] args) {
t4 t=new t4();
t.add(t.s);
System.out.println(t.s);
}
private void add(String s) {
s=s+"b";
System.out.println(s);
}
}
为什么结果还是aa,我觉得应该是aab啊,Java是传递是引用,那么s获得了t.s的引用,那么s和t.s指向同一个java对象,所以应该是aab。
我还想问一下int等基本数据类型他们不是类么?那Integer呢,为什么我用Integer来创建的对象还是改不了原来的数字?
大神求救。。 展开
7个回答
2015-12-07 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
传值就是你改变这个值,不会改变原值。例如
int a=1;
把a作为参数经过方法调用,在方法中改变a的值如。
a=2;
在方法中a是变成2了。
但是在外面a还是1。.
如果是传引用,值是会变的。
例如这样
public class Test {
public void test(List list){
list.remove(0);
list.add("b");
}
public static void main(String[] args) {
String a="123";
List list=new ArrayList();
list.add(a);
new Test().test(list);
System.out.println(list.get(0));
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
基本数据类型都是值传递,string比较特殊,它是一个类,但不是引用传值,string一旦赋值,所指的引用(内存地址指向的值)就不能改变。string a="qwr" ,a=a+"ewer"此时实际上是又创建了一个地址引用,原有的引用地址成了垃圾,无法再使用,但他的值是没有变的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这不是传值的问题啊,其实是代码执行的循序的问题啊。这样:
public class t4 {
String s="aa";
public static void main(String[] args) {
t4 t=new t4();
t.add(t.s);
//System.out.println(t.s);
}
private void add(String s) {
s=s+"b";
System.out.println(s);
}
}
integer是int的封装类啊。
public class t4 {
String s="aa";
public static void main(String[] args) {
t4 t=new t4();
t.add(t.s);
//System.out.println(t.s);
}
private void add(String s) {
s=s+"b";
System.out.println(s);
}
}
integer是int的封装类啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在add方法里面赋值的s是实参的值 实参的s变成aab,类变量s还是aa
如果想要t.s是aab在add里面this.s = s + "b";
如果想要t.s是aab在add里面this.s = s + "b";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |