黑马程序员技术交流社区
标题:
什么字节码?它又有什么应用呢?
[打印本页]
作者:
Changer_s
时间:
2013-6-2 20:28
标题:
什么字节码?它又有什么应用呢?
本帖最后由 Changer_s 于 2013-6-3 20:22 编辑
以前算是模糊的理解:为所谓的内存什么的,好像完全错了,求解释
字节码的比较比较的又是什么呢?比的是内存地址么?这想法完全不对呀!
为什么String a = "asd"与String b= new String(“asd”)的内存地址竟然是相等的,求解决!
不要只是简单的说概念,也说说你的理解,以及它的应用!谢谢
作者:
紫衣侯
时间:
2013-6-2 22:41
字节码就是二进制数据,每个类都有自己独一无二的字节码,可所以以在反射中运用。至于你说的string a = “abc” 和string b = new string(abc); 内存地址是不等的,可以用== 验证
作者:
张得贵
时间:
2013-6-2 22:44
对于String a = "asd"与String b= new String(“asd”)内存地址相等的问题,我是这样理解的,不知道对不对,仅作参考。
String a = "asd"是初始化了一个字符串对象,字符串一旦初始化就不可以被改变。
然后new String(“asd”)是新建了一个字符串对象,对于字符串这种在常量池中存在的数据,当它发现数据已经存在时,就不会再单独开辟空间了,而是把对象指向它就行了。
String b= new String(“asd”),我理解为是地址的赋值操作,可能说的不准确,就是让b和new String的引用指向同一个对象。
这样的话,相当于它们都指向了“asd”所以内存地址值相等。
作者:
火之意志
时间:
2013-6-2 23:20
字符串对象时存在于方法区中的常量池的,他的特点是唯一性,即常量池中的字符串都是唯一的,不重复飞,当一字符串存在了,如“java”,当再有语句要创建“java”的字符串对象时,就会把以后的字符串对象“java”的地址指向这个对象引用,不会重复创建,所以他们在内存中是同一个对象,所以地址相同,对于字符串这种在常量池中存在的数据,当它发现数据已经存在时,就不会再单独开辟空间了,而是把对象指向它就行了。
作者:
江大海
时间:
2013-6-3 07:34
火之意志 发表于 2013-6-2 23:20
字符串对象时存在于方法区中的常量池的,他的特点是唯一性,即常量池中的字符串都是唯一的,不重复飞,当一 ...
享元模式?flyweight?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2