Java一个小问题

csdn上看到的一个小问题,当时看了下就得到答案,结果错的。请教下大家这个程序输出结果,为什么?publicclassTest{publicstaticinta;publ... csdn上看到的一个小问题,当时看了下就得到答案,结果错的。请教下大家这个程序输出结果,为什么?
public class Test {
public static int a;

public static void main(String[] args) {
modify(a);
System.out.println(a);
}

public static void modify(int a) {
a++;
}
}
对于基本类型是值传递这个问题做了下小小的测试,对于8种基本类型之外的String测试了下,
代码:
public class Test {
public static String s = "s";

public static void main(String[] args) {
modify(s);
System.out.println(s);
}

public static void modify(String s) {
s += "test";
}
}
输出结果:
s

String不是基本数据类型,所以我在想是不是还有一些其他的方面,先谢谢大家的回答 ^_^
展开
 我来答
xjieni
2009-04-17 · TA获得超过113个赞
知道小有建树答主
回答量:161
采纳率:0%
帮助的人:68万
展开全部
两个小程序都是一个性质
局部变量的值是有改变
可你打印的都是全局变量
而全局变量的值从来都没变过。。。
--------------------------------------------------
public static void modify(int a) {
a++;
}
这边函数里面的a是新的
不是
public static int a;
定义的a

System.out.println(a);
的a却是那个全局的a
就是说,全局变量a的值都没变过。。。
星知魂
2009-04-17 · TA获得超过685个赞
知道小有建树答主
回答量:761
采纳率:0%
帮助的人:583万
展开全部
在java里基本数据类型是值传递的.一般来说在java对象类型是引用传值,而基本类型是值传递.值得注意的是基类型的包装类和String类型都是值传递的.
也就是说public static int a;
改成public static Integer a;结果也是一样的.同样你也可以试一下String类型,结果做和你想象的不一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Foxcoming
2009-04-17 · TA获得超过692个赞
知道小有建树答主
回答量:718
采纳率:0%
帮助的人:812万
展开全部
0
所谓的值传递(by value)和引用传递(by reference)
基本数据类型是值传递,所以在main里面,a没有变化。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chlsgo
2009-04-17 · TA获得超过560个赞
知道小有建树答主
回答量:410
采纳率:0%
帮助的人:419万
展开全部
你把函数里的 int a 改成 int b
输出结果就是你 想的吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chuodl
2009-04-17 · TA获得超过1296个赞
知道小有建树答主
回答量:985
采纳率:0%
帮助的人:437万
展开全部
应该是a 参数传递相当于赋值语句 对吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式