java的字符串是常量吗它存 放在内存的哪里

class StringEquals {
public static void main(String [] agrs) {
String a = new String("你好");
String b = "你好";
if (a == b)
{
System.out.println("b srting equals a string");
}
else {
System.out.println("b string not equals a string");
}
}
}

Srting b 在B这变量是不是装拉内存地址啊?

你好,String变量中存的是地址。在你的例子中,变量b存储的是一个"你好"的字符串常量的地址,这个地址是不变的,若你再声明String c=”你好";则c==b,同样,b==“你好";因为常量在内存中只存储一次。而你的变量a使用了new运算符,它的意思显而易见,就是重新申请一个空间来存放字符串的。所以当你再有String d=new String("你好");变量(d==a)的返回值是false。
希望这样解释能理解吧
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-10
简答的说,String比较你这样是错误的 String 比较JVM中虚拟地址应该使用equals至于这了内存地址java是不可能获取的,java存在于jvm中 jvm无法获得硬件直接内存地址String str="";str.hashCode(); 获得的是java虚拟机中虚拟的内存暂时地址,java虚拟机最终会在堆创建一个内存地址!java无法超出jvm范围外, java api也没有提供该函数!
第2个回答  2013-04-09
java中string是引用变量,不是常量,它是存放在堆内存当中的,每次new的时候会创建一个新的引用对象,虽然内容是一样的,但是引用不一样。a==b是比较引用的对象和内容都相同才会成立。如果只想比较内容,就应该使用equals()方法
第3个回答  2013-04-10
java中的数据类型必须实例化后能才使用,各种数据类型实例化后的表示方式分为两种:变量和常量

变量简单的说就是在程序运行期间可以修改的量,常量就是在程序运行期间不能被修改的量

兄弟,随便找本JAVA入门的书上都会有介绍的,还是先找本书看看吧,这样才能比较系统的入门
第4个回答  2013-04-09
b为字符串常量,存放在java虚拟机为它分配的内存在常量池中。
如果常量池中存在“你好”,b就会指向其内存地址。
如果不存在Java虚拟机会为“你好”分配一个地址本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网