A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹满林 中级黑马   /  2013-7-12 13:11  /  1232 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

if (true) {
   int i = 0;
} else {
   int i = 2;
}
System.out.println(i);
问输出几?
我主要想知道为什么呀??

7 个回复

倒序浏览
上面那段程序如果 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里面的条件始终满足,一直是真。
回复 使用道具 举报
二楼正解,i如果定义在if或else里面的话,i出了{}这个就会被回收,除非定义了一个全局的变量i。
if(true)是一个永真式,恒成立的,所以它的主体部分是一定会被执行的。
回复 使用道具 举报
好的,谢谢
回复 使用道具 举报
wedge 发表于 2013-7-12 15:00
二楼正解,i如果定义在if或else里面的话,i出了{}这个就会被回收,除非定义了一个全局的变量i。
if(true)是 ...

理解啦,谢谢啦
回复 使用道具 举报
黑马2014 发表于 2013-7-12 13:38
上面那段程序如果 i 是在if或else里面定义的,那程序会报错,找不到符号 i .
public static void main(Stri ...

谢谢,理解啦
回复 使用道具 举报
李江 中级黑马 2013-7-12 23:56:46
7#
输出为0,变量作用范围及变量默认初始化问题。
回复 使用道具 举报
挺新奇的,呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马