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

classStringEquals{publicstaticvoidmain(String[]agrs){Stringa=newString("你好");Stringb=... 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这变量是不是装拉内存地址啊?
展开
 我来答
千鸟★叶缘
2013-04-09 · 超过18用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:29.7万
展开全部
你好,String变量中存的是地址。在你的例子中,变量b存储的是一个"你好"的字符串常量的地址,这个地址是不变的,若你再声明String c=”你好";则c==b,同样,b==“你好";因为常量在内存中只存储一次。而你的变量a使用了new运算符,它的意思显而易见,就是重新申请一个空间来存放字符串的。所以当你再有String d=new String("你好");变量(d==a)的返回值是false。
希望这样解释能理解吧
匿名用户
2013-04-10
展开全部
简答的说,String比较你这样是错误的 String 比较JVM中虚拟地址应该使用equals至于这了内存地址java是不可能获取的,java存在于jvm中 jvm无法获得硬件直接内存地址String str="";str.hashCode(); 获得的是java虚拟机中虚拟的内存暂时地址,java虚拟机最终会在堆创建一个内存地址!java无法超出jvm范围外, java api也没有提供该函数!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zzy48711
2013-04-09
知道答主
回答量:19
采纳率:0%
帮助的人:6.8万
展开全部
java中string是引用变量,不是常量,它是存放在堆内存当中的,每次new的时候会创建一个新的引用对象,虽然内容是一样的,但是引用不一样。a==b是比较引用的对象和内容都相同才会成立。如果只想比较内容,就应该使用equals()方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-10
展开全部
java中的数据类型必须实例化后能才使用,各种数据类型实例化后的表示方式分为两种:变量和常量

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

兄弟,随便找本JAVA入门的书上都会有介绍的,还是先找本书看看吧,这样才能比较系统的入门
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JoJn007
2013-04-09 · TA获得超过108个赞
知道答主
回答量:77
采纳率:0%
帮助的人:64.1万
展开全部
b为字符串常量,存放在java虚拟机为它分配的内存在常量池中。
如果常量池中存在“你好”,b就会指向其内存地址。
如果不存在Java虚拟机会为“你好”分配一个地址
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式