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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 帅飞 中级黑马   /  2014-5-4 02:45  /  1839 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 帅飞 于 2014-5-6 00:02 编辑




——————————————————————————————————————————————————
class Foryuju
{
        public static void main(String[] args)
        {
                int x=1;
                for (System.out.println("a"); x<3;System.out.println("c"))
                {
                        System.out.println("d");
                        x++;
                }
        }
}

——————————————————————————————————————————————————

运算结果是   adcdc  

知道是进行两次循环运算,,求大神详细解释一下该for语句的执行情况。。。




15 个回复

倒序浏览
for(表达式①;表达式②;表达式③){
}
回复 使用道具 举报

for(表达式①;表达式②;表达式③){
       表达式④;
}
其中表达式②返回值必须是boolean类型的,顺序是1243243243.....
回复 使用道具 举报
本帖最后由 张然龙 于 2014-5-4 08:29 编辑

for语句的执行顺序是这样的:
        for(v1;v2;v3)
        {
                v4
        }
        1.首先进入for循环初始化局部变量V1,可以定义多个局部变量用逗号分隔开,这个变量在进入for循环时就初始化 而且只会初始化一次!
        
        2.数据初始化完毕之后就会读取条件是否满足,也就是说会判断v2位置是否为true,如果为true则执行循环体中的代码 ,也就是v4!如果判断结果为false那就退出循环!
        
        3.当循环体中的代码执行完毕之后,他就会把v3的位置执行,所以这个地方一般都写自增的代码 比如说X++之类的!
        
        4.自增完毕后他就会回来继续判断v2的条件是否满足,如果还是true则继续循环,循环结束之后,v3又会自增,如此循环反复,直到条件不满足为止,如果条件一直满足,则进入死循环
              
如果按你说的就是执行顺序运算结果是   adcdc  ,如果按我的图来看的话就是  v1 --> v2 --> v4 --> v3 -->2 --> v4 --> v3  这回够清楚了吧!!

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报 2 0
class Foryuju
{
        public static void main(String[] args)
        {
                int x=1;
                for (System.out.println("a"); x<3;System.out.println("c");)
                {
                        System.out.println("d");
                        x++;
                }
        }
}

执行顺序如下:
1.执行语句System.out.println("a")   
2.判断条件x<3 是否成立,
3.条件成立,执行System.out.println("d");
4.x++,自增,x=2
5.执行System.out.println("c");
6.判断条件 x<3是否成立
7.条件成立,执行System.out.println("d");
8.x++,自增,x=3
9.执行System.out.println("c");

10.判断条件x<3是否成立,条件不成立,结束循环

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报
本帖最后由 彭旭文 于 2014-5-4 11:41 编辑

楼主可能在FOR(T1;T2;T3)的执行顺序上出现了点小模糊。
T1:初始化值。当FOR循环第一次运行的时候,FOR循环就会执行这一条语句,且只执行一次。
T2:条件判断。当条件成立后,此时不会读取T3,立马进入FOR范围内读取代码语句,当条件不成立时结束FOR循环。
T3:一般为自增或者是自减语句(i++/i--等等),但不排除其他语句,例如你这种输出语句。当FOR内部所有语句执行完毕后,就会执行这一条语句,执行完这一条语句后算是完成了整个FOR语句的一次循环。然后又从新进入下一轮判断和执行...
所以楼主的程序顺序是(T1-T2-FOR循环代码-T3-T2-FOR循环代码-T3-结束FOR循环)
希望可以帮到楼主...

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
张然龙 发表于 2014-5-4 08:19
for语句的执行顺序是这样的:
        for(v1;v2;v3)
        {

Very clear
回复 使用道具 举报
江夷 发表于 2014-5-4 10:11
class Foryuju
{
        public static void main(String[] args)

zillion zillion thanks
回复 使用道具 举报
彭旭文 发表于 2014-5-4 11:38
楼主可能在FOR(T1;T2;T3)的执行顺序上出现了点小模糊。
T1:初始化值。当FOR循环第一次运行的时候,FOR循 ...

恩恩,,原来如此,,万万分感谢 zillion zillion thanks
回复 使用道具 举报
本帖最后由 赵京 于 2014-5-4 17:36 编辑

先给复制您的代码,详细给你说明一下
class Foryuju
{
        public static void main(String[] args)
        {
                int x=1;
                for (System.out.println("a"); x<3;System.out.println("c"))
                {
                        System.out.println("d");
                        x++;
                }
        }
}
在这个语句中,System.out.println("a");这句话是循环初始化值,进入循环后,先执行它,然后输出a,此行只执行一次,之后再执行  System.out.println("d");输出d,之后再执行x++,结果为2,再执行这行System.out.println("c")输出c,因为2是满足x<3条件的,再继续继续循环执行System.out.println("d")输出d,,x++,结果为3,再执行System.out.println("c"),输出c,然后进行判断,3<3是false,不满足条件,循环结束,所以结果为adcdc

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
赵京 发表于 2014-5-4 17:35
先给复制您的代码,详细给你说明一下
class Foryuju
{

谢谢哈.....:handshake
回复 使用道具 举报
按照顺序,仔细看看
回复 使用道具 举报
for语句的执行流程:

for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
        循环体执行语句;
}

1. 先执行初始化表达式一次

2. 判断条件表达式,如果是真

3. 执行循环体

4. 执行循环后的操作表达式

5. 再判断条件表达式,如果是真,在继续循环,如果是假,循环结束。

所以,你的代码中执行流程是这样:

1. 执行初始化表达式,输出a

2. 判断x<3是真是假,x=1,显然是真

3. 执行循环体,即输出d,x++这时x=2

4. 执行循环后操作表达式,即输出c

5. 再判断x<3是真是假,x=2,真

继续循环,直到x<3为假,循环结束,所以结果输出  adcdc

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1

查看全部评分

回复 使用道具 举报
当有人给你回复后,请及时把帖子编辑为提问结束,这样版主才可以给你加分。
回复 使用道具 举报

class Foryuju
{
        public static void main(String[] args)
        {
                int x=1;
                for (System.out.println("a"); x<3;System.out.println("c");)
                {
                        System.out.println("d");
                        x++;
                }
        }
}

执行顺序如下:
for(表达式1;表达式2;表达式3{
       表达式4;
}
1).x=1.在for循环中先执行表达式1;判断表达式2,满足条件,执行表达式4,在执行表达式3,在判断表达式2.不满足结束循环。具体过程如下:
1).执行语句System.out.println("a")   
2).判断条件x<3 是否成立,
3).条件成立,执行System.out.println("d");
4).x++,自增,x=2
5).执行System.out.println("c");
6).判断条件 x<3是否成立
7).条件成立,执行System.out.println("d");
8).x++,自增,x=3
9).执行System.out.println("c");
回复 使用道具 举报
邵景伦 发表于 2014-5-5 14:43
class Foryuju
{
        public static void main(String[] args)

非常感谢。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马