热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java循环变量_关于Java循环变量的问题。。有点急。。!

关于Java循环变量的问题。。有点急。。!关注:257答案:6mip版解决时间2021-01-2723:44提问者萬裏夢魂2021-01-2720:38这是Java里

关于Java循环变量的问题。。有点急。。!

关注:257  答案:6  mip版

解决时间 2021-01-27 23:44

e6cb1a03ad541b3098697807b7bf1798.png

提问者萬裏夢魂

2021-01-27 20:38

这是Java里的循环:

public clas Demo{

public static void main(String[] args){

int i = 0,j = 0;

for(i;i<100;i&#43;&#43;){

j&#61;j&#43;&#43;;

System.out.println(j);

}

}

}

下面是C语言里面的循环&#xff1a;

#include int main(int argc,char *argv[]){

int i &#61; 0,j &#61; 0;

for(i;i<100;i&#43;&#43;)

j&#61;j&#43;&#43;;

printf(j);

return 0;

}

这两段代码我只想表达一个问题&#xff0c;就是把变量j从0循环到100&#xff0c;可是得出来的结果却不一样。难道C语言和Java的语法不一样&#xff1f;希望有高手进来把这两段代码能详尽的解释一番&#xff0c;在下不甚感激。&#xff01;&#xff01;&#xff01;

小弟将我所有分都献上了。。。

想知道这两段程序是怎么走的。最好是有多详细讲多详细吧。。

真的多谢了。。

最佳答案

e6cb1a03ad541b3098697807b7bf1798.png

二级知识专家注定要离开

2021-01-27 21:10

java段中的j&#61;j&#43;&#43;;一句有问题&#xff0c;

直接j&#43;&#43;就行了&#xff0c;不用在赋值给j了

j&#43;&#43;就是一个表达式他的值是0&#xff0c;先得出则个值&#xff0c;在做自加运算&#xff0c;这时候j&#61;1&#xff1b;但它最后才会做赋值运算

即把j&#43;&#43;表达式的值0赋给j&#xff0c;所以j又等于0了。

如果是&#43;&#43;j的话&#xff0c;则是先做自加运算在得表达式&#43;&#43;j的值同样最后赋值给j

全部回答

e6cb1a03ad541b3098697807b7bf1798.png

1楼噯倁酒濃

2021-01-28 01:51

按照你的代码JAVA写的程序会输出100次0&#xff0c;因为输出语句你写到了循环体内部。而C语言代码只会输出一次0&#xff0c;他的输出语句在循环外面&#xff0c;这个看一下大括号的位置就可以明白了&#xff0c;还有C语言的输出应该写成printf("%d",j);

e6cb1a03ad541b3098697807b7bf1798.png

2楼众里寻春风

2021-01-28 00:46

真正的不同点与循环无关(两个循环过程都一样&#xff0c;只是java的大括号把print包含了&#xff0c;c没有包含进去&#xff0c;可能是笔误吧&#xff01;)

------------------------------------------

真正的不同点在于&#xff1a;j&#61;j&#43;&#43;

c语言&#xff0c;会改变j的值&#xff0c;执行完一次之后&#xff0c;j会加1&#xff0c;变成j&#61;1&#xff0c;循环100次之后j&#61;100

java语言&#xff0c;不会改变j的值&#xff0c;(因为这个语句j被修改了两次&#xff0c;第一次是j&#43;&#43;&#xff1b;i变为1&#xff0c;最后一次是j&#61;0&#xff1b;所以结果j是0),循环100次之后&#xff0c;j还是不变&#xff0c;还是0

java里面反编译i&#61;i&#43;&#43;

0: iconst_0 //0放到栈顶

1: istore_1 //把栈顶的值保存到局部变量1&#xff0c;也就是i中

2: iload_1 //把i的值放到栈顶&#xff0c;也就是说此时栈顶的值是0

3: iinc 1, 1 //注意这个指令&#xff0c;把局部变量1&#xff0c;也就是i&#xff0c;增加1&#xff0c;这个指令不会导致栈的变化&#xff0c;也就是说局部变量1&#xff0c;即i此时为1了。

6: istore_1 //把栈顶的值(0)保存到局部变量1&#xff0c;也就是让i为0了&#xff0c;所以最后i为0

7: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;

10: iload_1

11: invokevirtual #3; //Method java/io/PrintStream.println:(I)V

14: return

---------------------------

所以&#xff0c;你要j都从0循环到100&#xff0c;应该直接写成j&#43;&#43;,而不能写成&#xff0c;j&#61;j&#43;&#43;

如&#xff1a;

for(i;i<100;i&#43;&#43;){

j&#43;&#43;;

System.out.println(j);

}

就不会有问题&#xff01;

e6cb1a03ad541b3098697807b7bf1798.png

3楼繁华初下&#xff0c;心已空

2021-01-27 23:20

class Test1123

{

public static void main(String[] args)

{

int j&#61;0;

for (int i&#61;0;i<100 ;i&#43;&#43; )

{

j&#43;&#43;;

System.out.println(j);

}

}

}

e6cb1a03ad541b3098697807b7bf1798.png

4楼搥噚仟哖

2021-01-27 22:16

首先要看你做什么事情了 你要明白 如果是叠加的话 只能放在外面 声明一次

要是放在内部的话 每次循环都要声明一次

根据实际情况而定 这两种不同的定义方式 可以解决两种问题

给你讲解下两种情况

第一种就说你上面的那种吧 定义在循环体的外面

//我们来实现1-10数字的累加

int num &#61; 0;

for(int i&#61;1;i<&#61;10;i&#43;&#43;)

{

//这样就实现了1-10的数字累加 如果你把int num &#61; 0;

//定义到循环体的内部 它每次循环进来初始化的值是0

//那么结果肯定是错误的 所以只能选择定义在外部 当然定义在内部也可以

//但是比定义在外部要复杂

num &#61; num&#43;i;

}

第二种就说你上面的第二种 定义在循环体的内部

//第二个 我们来做一个封装 装10个人的信息

//假如我们有一个student类 里面有id 和name两个属性

vector vec &#61; new vector();

for(int i&#61;0;i<10;i&#43;&#43;)

{

student st &#61; new student();//这样就必须在循环的内部进行定义

//每次进来都new 一个新的实例 相当于每次

//都创建一个student

st.setid(i);

st.setname("第"&#43;i&#43;"人");

vec.addelement(st);

}

e6cb1a03ad541b3098697807b7bf1798.png

5楼错过の花开

2021-01-27 21:54

第一步&#xff1a;给i&#xff0c;j赋初始值都是0&#xff1b;

第二步&#xff1a;进入for循环

再循环中

i<100;是循环条件

循环时是这样

第一步&#xff1a;i&#61;0&#xff1b;

第二步&#xff1a;i<100是循环的条件&#xff0c;判断i的值是不是小于100&#xff0c;如果是则进入循环体&#xff0c;执行循环体中的语句&#xff1b;

第三步&#xff1a;执行循环体中的语句

在循环体中

j&#61;j&#43;&#43; 意思是在运行过这个语句后这个j的值&#43;1

printf(j)打印j的值

第四步&#xff1a;执行i&#43;&#43;&#xff0c;给i的值加1&#xff1b;则i的值从0&#61;》1;

第五步&#xff1a;在判断i的值是不是小于100&#xff1b;如此循环&#xff0c;一直到i的值大于等于100&#xff0c;循环条件不成立了

循环结束。

所以代码的输出为0,1,2,3&#xff0c;一直到99&#xff1b;

这两段代码是一个意思&#xff0c;就是一个c&#xff0c;一个java

我要举报

如果感觉以上信息为低俗/不良/侵权的信息&#xff0c;可以点下面链接进行举报&#xff0c;我们会做出相应处理&#xff0c;感谢你的支持&#xff01;

点此我要举报以上信息&#xff01;

推荐资讯

大家都在看



推荐阅读
author-avatar
静待花开0088
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有