黑马程序员技术交流社区

标题: 疑问?这结果是多少?? [打印本页]

作者: 曹满林    时间: 2013-7-12 13:11
标题: 疑问?这结果是多少??
if (true) {
   int i = 0;
} else {
   int i = 2;
}
System.out.println(i);
问输出几?
我主要想知道为什么呀??
作者: 黑马2014    时间: 2013-7-12 13:38
上面那段程序如果 i 是在if或else里面定义的,那程序会报错,找不到符号 i .
public static void main(String[] args)
        {   int i;
                if (true)
                {
                        i=0;
                }
                else
                {
                   i=2;
                }
                System.out.print(i);
如果像我这么定义,i 输出的值是0.因为if里面的条件始终满足,一直是真。
作者: wedge    时间: 2013-7-12 15:00
二楼正解,i如果定义在if或else里面的话,i出了{}这个就会被回收,除非定义了一个全局的变量i。
if(true)是一个永真式,恒成立的,所以它的主体部分是一定会被执行的。
作者: 曹满林    时间: 2013-7-12 21:56
好的,谢谢
作者: 曹满林    时间: 2013-7-12 21:56
wedge 发表于 2013-7-12 15:00
二楼正解,i如果定义在if或else里面的话,i出了{}这个就会被回收,除非定义了一个全局的变量i。
if(true)是 ...

理解啦,谢谢啦
作者: 曹满林    时间: 2013-7-12 21:57
黑马2014 发表于 2013-7-12 13:38
上面那段程序如果 i 是在if或else里面定义的,那程序会报错,找不到符号 i .
public static void main(Stri ...

谢谢,理解啦
作者: 李江    时间: 2013-7-12 23:56
输出为0,变量作用范围及变量默认初始化问题。
作者: 夏天那抹蓝╮    时间: 2013-7-19 23:35
挺新奇的,呵呵




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2