关于java运行问题。如下请大家帮忙分析一下吧?
intnum=0;for(inti=0;i<5;i++){num=num++;System.out.print(num+"");/***输出结果为00000*/}与我想到...
int num = 0; for (int i = 0; i < 5; i++) { num = num++; System.out.print(num+" ");/** * 输出结果为0 0 0 0 0 */ }
与我想到的 0 1 2 3 4 不一样,请大家帮解释一下。。。 展开
与我想到的 0 1 2 3 4 不一样,请大家帮解释一下。。。 展开
8个回答
展开全部
虽然ls有人说这问题很学究,不过我觉得还是值得讨论的
说实话,在看到你这个题目的时候,我和你想的结果是一样的
但是运行结果确实是0,0,0,0,0
思考了一下,我觉得是因为java只有值传递没有引用传递造成的
num = num++;
这道题我能不能看成这样
num = 0;
temp = 0;
num = temp ++;
?
根据java内存的分配情况来看,这个和num = num++是相等的。
那么这个就可以看成
num = temp;
temp = temp+1;
因为java是值传递
所以temp的改变并不会最终传递给num
所以这题的结果是
num = num;
temp = num +1;
所以num永远是0
以上仅仅是我个人的看法,希望高手指点
说实话,在看到你这个题目的时候,我和你想的结果是一样的
但是运行结果确实是0,0,0,0,0
思考了一下,我觉得是因为java只有值传递没有引用传递造成的
num = num++;
这道题我能不能看成这样
num = 0;
temp = 0;
num = temp ++;
?
根据java内存的分配情况来看,这个和num = num++是相等的。
那么这个就可以看成
num = temp;
temp = temp+1;
因为java是值传递
所以temp的改变并不会最终传递给num
所以这题的结果是
num = num;
temp = num +1;
所以num永远是0
以上仅仅是我个人的看法,希望高手指点
展开全部
int num = 0;
for (int i = 0; i < 5; i++)
{ num++;
System.out.print(num+" ");/** * 输出结果为0 0 0 0 0 */ }
希望对你有帮助
for (int i = 0; i < 5; i++)
{ num++;
System.out.print(num+" ");/** * 输出结果为0 0 0 0 0 */ }
希望对你有帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得你对赋值的概念理解的不深刻。。。你这是num=num++; 而你num初始化赋值为0,然后输出永远是0了;
int num = 0;
for (int i = 0; i < 5; i++) {
num=i;
System.out.print(num + " ");
}
其实你这样做控制是不科学的,不符合逻辑的。。
你要想限制num 值的输出:
for(int num=0;num<5;num++){
System.out.print(num + " ");
}
这样做才符合代码设计原则和规范。。
你这基础有点不行,建议你找本基础的书看看。从C 开始吧!自己也要勤动手。希望对你有帮助。
int num = 0;
for (int i = 0; i < 5; i++) {
num=i;
System.out.print(num + " ");
}
其实你这样做控制是不科学的,不符合逻辑的。。
你要想限制num 值的输出:
for(int num=0;num<5;num++){
System.out.print(num + " ");
}
这样做才符合代码设计原则和规范。。
你这基础有点不行,建议你找本基础的书看看。从C 开始吧!自己也要勤动手。希望对你有帮助。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的num = num++ 其实是包含了两步运算 按照运算的优先级依次是自增运算“num++” 然后才是=号的赋值运算
num++ 与++num的不同 在于前者会首先告诉你num的值 再运行自增;++num会先运行自增 再告诉你num的值
所以你num = num++;其实是把num的0值赋给了num 所以得出的num值始终是0
你如果想要得到num + 1的值然后赋给他自己 直接num++ 或num = num + 1不就好了?
带自增的运算最好单独一行 例如:
int a = 1;
a = a * 10;
a++;
最好不要写成 给自己找麻烦:
int a = 1;
a = ++ (a * 10);
顺便说句题外话 关于这种“I++”和“++i”这种毫无意义的话题 总是有些自认为很牛的“老学究”乐此不疲得在研究 在实际的开发过程中 有谁会把“a++ + ( ++b - c--)”这种垃圾代码写在程序里?有这个时间 多学点真东西多好
num++ 与++num的不同 在于前者会首先告诉你num的值 再运行自增;++num会先运行自增 再告诉你num的值
所以你num = num++;其实是把num的0值赋给了num 所以得出的num值始终是0
你如果想要得到num + 1的值然后赋给他自己 直接num++ 或num = num + 1不就好了?
带自增的运算最好单独一行 例如:
int a = 1;
a = a * 10;
a++;
最好不要写成 给自己找麻烦:
int a = 1;
a = ++ (a * 10);
顺便说句题外话 关于这种“I++”和“++i”这种毫无意义的话题 总是有些自认为很牛的“老学究”乐此不疲得在研究 在实际的开发过程中 有谁会把“a++ + ( ++b - c--)”这种垃圾代码写在程序里?有这个时间 多学点真东西多好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
num = num++;
这行的问题,使用了++就不用再赋值了啊,直接改用num++ 代替原来的num = num++ 就好了
这行的问题,使用了++就不用再赋值了啊,直接改用num++ 代替原来的num = num++ 就好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int num = 0; for (int i = 0; i < 5; i++) { num = ++num; System.out.print(num+" "); }
在这里的num++先运算完了再加,但是在这个程序这里却没得用,你要么写 num = num+1;要么写num = ++num;
在这里的num++先运算完了再加,但是在这个程序这里却没得用,你要么写 num = num+1;要么写num = ++num;
追问
为什么在这里不是运算完了再加呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询