String s="Hello world"与String s=new String("Hello World")的区别

xiaofan0204 2009-12-31 11:07:10
请问高手:
String s="Hello world";

String s=new String("Hello World");
有什么区别呀?
谢谢了。呵呵
...全文
609 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
luffyke 2010-01-05
  • 打赏
  • 举报
回复
String s1=new String("Hello World");
其实这条语句是下面两条语句的缩写,
String s1; //1
s1=new String(“Hello World”); //2
1. 在栈内存中定义一个名为s1的对String类的对像引用变量
2. 在堆内存开辟了一块空间用于存放字符串“Hello World”,将1定义的引用变量s1指向该空间。

楼主清楚了吧!
qiuqiupeng 2010-01-05
  • 打赏
  • 举报
回复
产生的对象数量不同
li002qwe 2010-01-05
  • 打赏
  • 举报
回复
String s="Hello world";
先在栈中创建一个对String类的对象引用变量s,然后查找栈中有没有存放"Hello world",如果没有,则将"Hello world"存放进栈,并令s指向“Hello world”,如果已经有”Hello world” 则直接令s指向“Hello world”。

String s=new String("Hello World");
用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。
Select9 2010-01-05
  • 打赏
  • 举报
回复
主要由不同的创建方式 数据是存储在不同的内存块中引起的
看看这篇文章
http://www.blogjava.net/xcp/archive/2008/08/10/stack.html
JavaAlpha 2010-01-04
  • 打赏
  • 举报
回复
xiaofan0204 2010-01-03
  • 打赏
  • 举报
回复
还有顶没呀?
我还想再问个问题……然后就结贴……好吗?
绝对结贴……
用记事本编辑的Java源文件在怎样运行打开呀?前提是本电脑只装了JDK,没有像Eclipse这样的辅助软件……
yangmao1022 2010-01-03
  • 打赏
  • 举报
回复
这什么意思啊
水中影子 2010-01-03
  • 打赏
  • 举报
回复
String s="Hello world";
创建一个值类型字符串

String s=new String("Hello World");
创建一个值类型字符串,并创建了指向字符串的引用
实际创建了两个
xiaofan0204 2010-01-03
  • 打赏
  • 举报
回复
我顶,我顶……
高手们快点出来呀……
我顶……
xiaofan0204 2010-01-03
  • 打赏
  • 举报
回复
怎么没有人回答了呀?我没有看到满意的答案呀…………
Dazzlingwinter 2009-12-31
  • 打赏
  • 举报
回复
细扣这个毛毛用都没有,企业里边哪管这些东西啊,做东西出来就好!
效率问题,自己看着办了...
xiaofan0204 2009-12-31
  • 打赏
  • 举报
回复
今天听老师讲了,但上课有点瞌睡……
好像是 String s="Hello world";是在内存的堆中建一个string内型的变量……。
而string s=new string("Hello world");是在内存堆栈中建立一个引用,在堆中创建一个对象“s”
………………
请朋友详解……呀》是这样的嘛

一楼说话未免太绝情了吧
deng5860 2009-12-31
  • 打赏
  • 举报
回复
JF
deng5860 2009-12-31
  • 打赏
  • 举报
回复
Java的String是一个强不变类;对象是状态不可改变
如:
String a = "abc";
String b = "abc";
String c = "abc";
java虚拟机只会创建一个字符串实例,有三个String对象共享这个值。
应用:
public class Test {
public static void main(String[] args) {
String n = 3;
System.out.println("Before change, n = " + n);
changeData(n);
System.out.println("After changeData(n), n = " + n);
}

public static void changeData(String nn) {
nn = 10;
}
}

转出
Before change, n = 3
After changeData(n), n = 3
如果String换成可变对象,则该对象的值会变

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧