int a=90;
int b=99;
这两个又有啥区别呢??开辟一个空间还是两个空间,求解释。。。作者: 程杰 时间: 2012-10-25 13:06
一步一步来,按顺序编译,int a = 90;编译器会先创建一个a的引用,完了查找有没有90这个值,如果没有就存储进来,并另a指向90;完了就是int b =90;建立一个b的引用,查找有没有90这个值,有的话直接就指向90; 如果在定义int b = 99,那么他会寻找有没有事99的值,没有的话存储进来,并另b指向99.这里的共享和对象之间的引用里的共享不一样,这个一个变量改变值的话,他会在创建这个值并且指向,对原来值没有影响。对象间引用则不同作者: 杨华东 时间: 2012-10-25 13:16
程杰 发表于 2012-10-25 13:06
一步一步来,按顺序编译,int a = 90;编译器会先创建一个a的引用,完了查找有没有90这个值,如果没有就存储 ...
精辟啊 兄弟作者: 给生活加点料 时间: 2012-10-25 13:22
int a=90;int b=90;
就这个而言他是在栈内存中,首先int a =90进来。查看是否有90,如果没有。开辟空间。如果有,指向这个空间,并不会再开辟。
所以这里只开辟了一个空间。
int a=90;int b=99;
这个则会开辟俩个空间。原理和上面一样。
作者: 高正新 时间: 2012-10-25 16:01
90 99 这些数据不是存在栈内存的。
引用存放在栈内存, 如 a , b 这些。
常量都存放在数据区的。