JAVA的简单问题

[复制链接]
查看11 | 回复5 | 2009-1-12 14:54:58 | 显示全部楼层 |阅读模式
String a = "abc"; 与
String a = new String("abc");
这两句话是不是完全相同?还是有什么不同,我很想知道

回复

使用道具 举报

千问 | 2009-1-12 14:54:58 | 显示全部楼层
Java运行环境有一个字符串池,由String类维护。执行语句String str="abc"时,首先查看字符串池中是否存在字符串"abc",如果存在则直接将"abc"赋给str,如果不存在则先在字符串池中新建一个字符串"abc",然后再将其赋给str。执行语句String str=new String("abc")时,不管字符串池中是否存在字符串"abc",直接新建一个字符串"abc"(注意:新建的字符串"abc"不是在字符串池中),然后将其付给str。前一语句的效率高,后一语句的效率低,因为新建字符串占用内存空间。String str = new String()创建了一个空字符串,与String str=new String("")相同。下面举个...
回复

使用道具 举报

千问 | 2009-1-12 14:54:58 | 显示全部楼层
这两是有所不同的:第一个并没有分配新的内存空间。比如:String a = "abc";String b = "abc";这个时候a与b的内容相同,并且a==b但是如果是:String a = "abc"; String b = new String("abc");那么他们的内容是相同的都是abc 不过a==b...
回复

使用道具 举报

千问 | 2009-1-12 14:54:58 | 显示全部楼层
你的问题很有意思 int a=1;int a=0+1;是一样的不?...
回复

使用道具 举报

千问 | 2009-1-12 14:54:58 | 显示全部楼层
作用上看完全相同,细化到内存的分配上,还是有些不同的,你只知道方式不同,但是实际的用处完全一样就ok了,不必再详细的追问,否则,那得该研究汇编了 呵呵...
回复

使用道具 举报

千问 | 2009-1-12 14:54:58 | 显示全部楼层
。。。无聊...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行