在java中为什么 int i=6; i=i++; System.out.print(i); i的输出值是6而不是7呢?

看了所有我能看懂的楼.感觉你们说的意思是i=i++中"="的优先级大于"++"的级别是吧?如果是,那为什么我输入i=(i++)的时候输出值还是6呢.?如果我的理解有错误,... 看了所有我能看懂的楼. 感觉你们说的意思是i=i++中"="的优先级大于"++"的级别是吧?
如果是, 那为什么我输入i=(i++)的时候输出值还是6呢.? 如果我的理解有错误, 请更正. 谢谢. !
我是新手. 希望各位说的白一点. 能让我看懂.. 谢谢.!
展开
 我来答
568145421
2011-08-06 · 知道合伙人软件行家
568145421
知道合伙人软件行家
采纳数:1353 获赞数:6756

向TA提问 私信TA
展开全部
i=i++ ;这个要想深入的理解,必须能看懂.class文件,也就是你能分析它内部的执行过程,在执行i=i++;时虚拟机先将i存放在了栈中,执行完后,仍然是从栈中直接取出,所以i的值是6。你可以网上搜一下这个题。道理一样。int i = 1 ;for(int j=0;j<1000;j++){i=i++;} 最后i的值还是1。道理是一样的。谢谢,希望对你有所帮助。
xu5294721
2011-08-06 · 超过10用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:38.3万
展开全部
i++ 和 ++i
如果她们在表达式中的意思是: i++的意思是 先赋值后加1 ++i则是先加1再赋值 ++在前就先加1 ++在后就后加1
如果单独给出,不是表达式形式的都是加1没有什么先不先赋值了 就等于是自加1. 如: int i = 6; i++; System.out.println(i); 这里输出的就是7

希望能帮助到你!
追问
你说的是i=i++中"="的优先级大于"++"的级别是吧?
如果是, 那为什么我输入i=(i++)的时候输出值还是6呢.? 如果我的理解有错误, 请更正. 谢谢. !
追答
++的优先级比 = 要高.     优先级1比2高   以此类推

在int i = i++中是表达i++的意思是 先赋值后加1 ++i则是先加1再赋值 ++在前就先加1 ++在后就后加1

优先级 运算符 结合性
1 () [] . 从左到右
2 ! +(正) -(负) ~ ++ -- 从右向左
3 * / % 从左向右
4 +(加) -(减) 从左向右
5 > >>> 从左向右
6 >= instanceof 从左向右
7 == != 从左向右
8 &(按位与) 从左向右
9 ^ 从左向右
10 | 从左向右
11 && 从左向右
12 || 从左向右
13 ?: 从右向左
14 = += -= *= /= %= &= |= ^= ~= >= >>>= 从右向左
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9dcc64a
2011-08-06 · TA获得超过232个赞
知道答主
回答量:38
采纳率:0%
帮助的人:73.1万
展开全部
你好!
输出的结果的确是6.
可以参看这篇文章:http://blog.sina.com.cn/s/blog_5974b76a0100blzc.html
以下是对你这段代码的虚拟机指令集.
~/test$ javap -c Main
Compiled from "Main.java"
public class javaapplication1.Main extends java.lang.Object{
public javaapplication1.Main();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return

public static void main(java.lang.String[]);
Code:
0: bipush 6 //常数6入栈
2: istore_1 // i赋值,常数值出栈
//以上完成i=6;
3: iload_1 //装载变量i,6入栈
4: iinc 1, 1//变量值增加,栈内值不变
//以上完成i++,此时i为7
7: istore_1//i赋值,6出栈。
//此时完成i=i++, i值为6,
8: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
11: iload_1
12: invokevirtual #3; //Method java/io/PrintStream.print:(I)V
15: return

}

参考资料: http://blog.sina.com.cn/s/blog_5974b76a0100blzc.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanyi509
2011-08-06
知道答主
回答量:9
采纳率:0%
帮助的人:4万
展开全部
i++代表的含义是先输出i的值然后再加1
而++i代表的含义是先加1再输出i的值!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
燃烧这青春
2011-08-06 · TA获得超过1734个赞
知道大有可为答主
回答量:3901
采纳率:0%
帮助的人:2444万
展开全部
我也不明白,楼上两位说的都对但不能解释出来为什么,就算是先运算i=i;但是还有i++不时也运算了吗,这个时候i就是7啊?怎么会是6呐,我运行一下确实是6,就解释。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式