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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hkh3321313   /  2016-3-22 23:10  /  8748 人查看  /  115 人回复  /   7 人收藏 转载请遵从CC协议 禁止商业使用本文

huangkai521 发表于 2016-3-22 23:35
学习了,涨姿势,

我也是涨姿势了
回复 使用道具 举报
huangkai521 发表于 2016-3-22 23:35
学习了,涨姿势,

我也是涨姿势了
回复 使用道具 举报
xiaofushen 发表于 2016-3-23 00:18
这个问题一开始我和同学也纠结好久,不过后来明白了,不过楼主分享的很详细,理解又加深了. ...

实际上这个涉及了java虚拟机的低层机制,如果用C语言写出来结果又会完全不同.
而且,实际工作中谁这么写呀,太烧脑了~
回复 使用道具 举报
Ak-47 发表于 2016-3-23 01:45
刚学基础但还是看的不是很懂啊

仔细看看两张图,很好懂的~
回复 使用道具 举报
北极1989 发表于 2016-3-23 23:31
我也以为是100,长见识了,这个题目分享的好

我是对老师的解释很不理解,所以才上网搜了一下相关资料.这个是一道很著名的Java面试题,而且貌似大家都不是很懂...
回复 使用道具 举报
j=i++  就是看不懂啊 好难呀
回复 使用道具 举报
111111111111111111111111111111
回复 使用道具 举报
学习了,很有用!
回复 使用道具 举报
长知识了....
回复 使用道具 举报
长知识了,
回复 使用道具 举报
学习学习
回复 使用道具 举报
个人理解:
java的编译器在遇到++和- -的时候会在栈内存中重新为变量分配一块内存空间作为运算,如果是i = i++,先将栈内存中i的初始值赋给堆内存的i,然后在栈内存中进行自增运算,运算结束也就销毁了,而i = ++i,则先在栈内存进行自增运算,运算结束赋值给堆内存中的i,然后销毁栈内存中的i;同理--也是一样的道理。通过以下代码可以验证:
public class Itest{
public static void main(String [] args){
int i=0;
int a=0;
a = a++;
System.out.println("a=" +a);//a = 0

a = ++a;
System.out.println("a="+ a);//a = 1

}
}
回复 使用道具 举报
表示没看懂
回复 使用道具 举报

多看两遍,很好懂的~
回复 使用道具 举报
874831352 来自手机 中级黑马 2016-3-24 21:18:30
35#
刚开始这个还不是很会呢
回复 使用道具 举报
题目非常好
回复 使用道具 举报
874831352 发表于 2016-3-24 21:18
刚开始这个还不是很会呢

这个属于比较难的,平时都不会很难,底层的东西我们不会学到的,那都是大牛学习的东西~
回复 使用道具 举报
skxy2016 发表于 2016-3-24 13:34
个人理解:
java的编译器在遇到++和- -的时候会在栈内存中重新为变量分配一块内存空间作为运算,如果是i  ...

哥们是不是计算机专业的呢?

点评

半路出生,还在学基础呢,这个论坛挺好,可以互相讨论学习  发表于 2016-3-24 23:39
回复 使用道具 举报

大家互相学习呗
回复 使用道具 举报
顶  涨知识了啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马