Kyle 发表于 2013-12-12 23:07
String a ="abc" 这种创建方式是在常量池中创建了一个常量abc,然后a作为引用变量指 ...
icyyaww 发表于 2013-12-12 23:33
String: 是地址比较所以是false。
integer:①无论如何,Integer a=1;与Integer b = new Integer(1); ...
barlay 发表于 2013-12-12 23:45
int c = 1;是在栈中存的1吧
楼下说的挺对的,“==”,用于比较原生类型,当然也可以比较自动装箱拆箱的I ...
Kyle 发表于 2013-12-12 23:59
嗯,你说的对。 是我没回答完善。
Integer a = 127;
barlay 发表于 2013-12-12 23:51
分析的太详细了,非常感谢!
另外有一个问题:你确定Integer a=1;中a 指向专门存放 1 的内存(常量池 ...
barlay 发表于 2013-12-13 00:06
还是不对,请参见icyyaww帖子第二条:java在编译Integer a = 128的时候,被翻译成-> Integer a = Integer. ...
Kyle 发表于 2013-12-13 00:15
是的,因为128是特殊情况。
Integer a = 127;
这是因为整数类型在常量池中有一定的范围,范围是-128到127 ...
icyyaww 发表于 2013-12-12 23:33
String: 是地址比较所以是false。
integer:①无论如何,Integer a=1;与Integer b = new Integer(1); ...
Kyle 发表于 2013-12-13 00:44
barlay的问题结束了。 我的问题来了。
我的观点是非new的情况,Integer a = 1;
只要数值在-128~127之间 ...
barlay 发表于 2013-12-13 00:43
不要再提常量池了,本来就没有常量池,非得造出这么一个概念来。你们所说的常量池,不就是一块只能读不能 ...
Kyle 发表于 2013-12-13 00:55
你对常量池的概念理解有偏差,不要激动,冷静分析问题。
Java当中是有常量池的,这个概念我可以100%的跟 ...
barlay 发表于 2013-12-13 20:35
你是按照语句执行顺序一步一步分析的,但实际情况是这样的:
1、Java源文件被编译器编译成class字节码文 ...
Kyle 发表于 2013-12-13 23:18
加载class字节码的内存区域叫做方法区,常量池是在方法区内的。
只能读不能写这个解释我不知道你是从哪里 ...
Kyle 发表于 2013-12-13 23:44
功力大成之日记得分享下经验并@我一下
共同学习
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |