java代码结果不同的原因

比较一下两段代码,说明结果为何不同代码一:publicclassTestScope{privatestaticinti=1;privatestaticintj=2;pub... 比较一下两段代码,说明结果为何不同
代码一:
public class TestScope {
private static int i = 1;
private static int j = 2;
public static void main(String[] args) {
int i = 3;
int k = 4;
{
int j = 5;
System.out.println("i + j is " + i + j);
}
k = i + j;
System.out.println("k is " + k);
System.out.println("j is " + j);
}
}
代码二:
public class TestScope {
private static int i = 1;
private static int j = 2;
public static void main(String[] args) {
int i = 3;
int k = 4;

int j = 5;
System.out.println("i + j is " + i + j);

k = i + j;
System.out.println("k is " + k);
System.out.println("j is " + j);
}
}
展开
 我来答
zjgzhengxian
2014-05-31 · TA获得超过1276个赞
知道小有建树答主
回答量:736
采纳率:100%
帮助的人:369万
展开全部

第二个,int j=5声明了一个局部变量,j对于下面所有代码都有效,所以

System.out.println("i + j is " + i + j);
k = i + j;
System.out.println("k is " + k);
System.out.println("j is " + j);

这几行代码中的j都是5


第一个中int j=5只对大括号内有效,所以

System.out.println("i + j is " + i + j);

中j=5

其它的j引用的是全局静态变量,j=2

百度网友320ce4e
2014-05-31
知道答主
回答量:60
采纳率:0%
帮助的人:27.7万
展开全部
                {
int j = 5;
System.out.println("i + j is " + i + j);
                }

在此范围局部变量 j 被赋值为5;出此范围j仍是原来的值即  j=2;。

需了解局部变量使用范围。

代码二:则在主函数中 变量已经赋值,那么主函数内  j=5;

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ChyFreeFly
2014-05-31 · TA获得超过200个赞
知道小有建树答主
回答量:587
采纳率:0%
帮助的人:150万
展开全部
代码一中k = i + j;中的j调用的是private static int j = 2;,因为上面int j = 5;在括号中调用不到

代码二是直接使用的int j = 5;

建议多学学debug,走一遍程序一下就看出来了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yonghuqds
推荐于2016-10-21 · TA获得超过298个赞
知道小有建树答主
回答量:257
采纳率:0%
帮助的人:162万
展开全部
java中有个东东叫局部代码块,是用来限制局部变量的生命周期
代码一中就是用了局部代码块
{
int j = 5;
System.out.println("i + j is " + i + j);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式