| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 725 人关注过本帖
标题:java中局部变量没有显示初始化不是要报错嘛,为什么下面的Z变量没有初始化却 ...
只看楼主 加入收藏
javaxx
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-9-29
结帖率:0
收藏
 问题点数:0 回复次数:2 
java中局部变量没有显示初始化不是要报错嘛,为什么下面的Z变量没有初始化却不报
public class text{
    public static void main(String[] args){
        int x=1,y=2,z;
        System.out.println(z=x+y);
    }
}而下面的C变量没有初始化却要报错,有什么区别,请各位前帮忙解答一下
public class text{
    public static void main(String[] args){
        int a=2,b=4,c;
        if(a<b)
            c=a*b;
        System.out.println(c);
    }
}

[ 本帖最后由 javaxx 于 2013-10-13 20:16 编辑 ]
搜索更多相关主题的帖子: public java 
2013-10-13 20:13
xioun
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:68
专家分:309
注 册:2013-4-8
收藏
得分:0 
同学你问的这个问题属于作用域的问题,第一个例子中没有任何的动作直接给z赋值,第二个例子中加入了判断,如果a不小于b的话你打印的c就会提示你需要赋值;

命若天定,我就破了这个天!
2013-10-14 11:29
ghjsmzy
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:187
专家分:573
注 册:2009-6-17
收藏
得分:0 
System.out.println(z=x+y);
这里是先z等同于x+y,是先把z初始化,再读取打出来,
而下面存在一个判断,才能初始化,如果判断为假则不会初始化。编译时没有做判断,直接编译打印没有初始化的c时就会报错了
if(a<b)  c=a*b;
        System.out.println(c);
我只这样理解的,不对还请给指正
2013-10-15 19:01
快速回复:java中局部变量没有显示初始化不是要报错嘛,为什么下面的Z变量没有初 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011116 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved