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来创建的对象还是改不了原来的数字?
大神求救。。
展开
 我来答
houxuejing1
2011-09-08 · TA获得超过137个赞
知道答主
回答量:97
采纳率:0%
帮助的人:25.4万
展开全部

aab

aa

这是我运行后的结果。t.add(t.s)方法调用的结果先输出,第二个在main方法内是全局变量直接输出。

二、int不是类类型。

    Integer n=new Integer("0");

       int n=0;

       是一样的效果。

基本数据类型和相应的包装类 

boolean-Boolean 

char----Character 

byte----Byte 

short--- Short 

int-----Integer 

long----Long 

float---Float 

double--Double

千锋教育
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));
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
知识改变de命运
推荐于2017-09-12 · TA获得超过101个赞
知道答主
回答量:25
采纳率:0%
帮助的人:15.6万
展开全部
基本数据类型都是值传递,string比较特殊,它是一个类,但不是引用传值,string一旦赋值,所指的引用(内存地址指向的值)就不能改变。string a="qwr" ,a=a+"ewer"此时实际上是又创建了一个地址引用,原有的引用地址成了垃圾,无法再使用,但他的值是没有变的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
baixiongfei235
2011-09-08 · 超过34用户采纳过TA的回答
知道答主
回答量:113
采纳率:0%
帮助的人:89.9万
展开全部
这不是传值的问题啊,其实是代码执行的循序的问题啊。这样:
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的封装类啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
woshiwjcwjc
2011-09-08
知道答主
回答量:15
采纳率:0%
帮助的人:21.5万
展开全部
你在add方法里面赋值的s是实参的值 实参的s变成aab,类变量s还是aa
如果想要t.s是aab在add里面this.s = s + "b";
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式