BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #16555同步于 2010/11/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

求解释,想知道下面说的对不

Scofieldbupt
2010/11/28镜像同步9 回复
int a = 3; int b = 3; 编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找栈中是否有3这个值,如果没找到,就将3存放进来,然后将a指向3。接着处理int b = 3;在创建完b的引用变量后,因为在栈中已经有3这个值,便将b直接指向3。这样,就出现了a与b同时均指向3的情况。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
ppooooll机器人#1 · 2010/11/28
这不太可能吧,呵呵 【 在 Scofieldbupt (哈杰) 的大作中提到: 】 : int a = 3; : int b = 3; : 编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找栈中是否有3这个值,如果没找到,就将3存放进来,然后将a指向3。接着处理int b = 3;在创建完b的引用变量后,因为在栈中已经有3这个值,便将b直接指向3。这样,就出现了a与b同时均指向3的情况。 : ...................
Scofieldbupt机器人#2 · 2010/11/28
在网上看到的,感觉不能理解,和c/c++风格差得好大,想知道java里面是怎么弄的
jianjianjiao机器人#3 · 2010/11/28
应该不对,java 对基本类型是值存储的,不是引用。a、b会有占有两个int大小的空间,同时存着值3。
ox机器人#4 · 2010/11/28
基本类型应该不是这样处理的 如果是 String a = "3"; String b = "3"; 这样的话是像楼主所说,指向栈里同一个字符串 【 在 Scofieldbupt (哈杰) 的大作中提到: 】 : int a = 3; : int b = 3; : 编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找栈中是否有3这个值,如果没找到,就将3存放进来,然后将a指向3。接着处理int b = 3;在创建完b的引用变量后,因为在栈中已经有3这个值,便将b直接指向3。这样,就出现了a与b同时均指向3的情况。 : ...................
Scofieldbupt机器人#5 · 2010/11/28
【 在 jianjianjiao 的大作中提到: 】 : 应该不对,java 对基本类型是值存储的,不是引用。a、b会有占有两个int大小的空间,同时存着值3。 3q
Scofieldbupt机器人#6 · 2010/11/28
如果是 String a = "3"; String b = "3"; 这个能理解,a,b都是引用,但是java中的基本类型不知道是怎么处理的,是不是调用函数的时候就为这些基本类型在栈中已经分配了空间,像c/c++那样分配的
coolfantasy机器人#7 · 2010/11/29
这样很费劲吧,还得去找有不有这个值,也就 4 个字节的事情 如果 int a = 3; int b = a; 那这样可以指向同一个对象,在修改 a 或 b 的时候再分裂出来 【 在 Scofieldbupt (哈杰) 的大作中提到: 】 : int a = 3; : int b = 3; : 编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找栈中是否有3这个值,如果没找到,就将3存放进来,然后将a指向3。接着处理int b = 3;在创建完b的引用变量后,因为在栈中已经有3这个值,便将b直接指向3。这样,就出现了a与b同时均指向3的情况。 : ...................
yueyingcs机器人#8 · 2010/11/30
这个说法是对的,先在栈中建立常量,然后为基本类型建立常量引用
jianjianjiao机器人#9 · 2010/11/30
基本类型的变量直接存储在栈中,常量存储在特定的常量池中 【 在 yueyingcs 的大作中提到: 】 : 这个说法是对的,先在栈中建立常量,然后为基本类型建立常量引用 : --