把困难踩在脚下

迎难而上

 

String 对象

1.String对象赋值的方法:
String对象赋值有两种方法,第一种方法是直接对变量进行赋值,例如:String str="abc";这种方法非常简单。第二种方法是使用new函数进行赋值,例如:String str=new String("abc");这种方法将产生两个String对象,因为"abc"本身就是一个字符串,这个对象是一个匿名对象,进行new函数又产生一个新的String对象,它在内存中的存储方式如下图所示:

这个程序在堆内存中开辟了两块空间,每块空间的内容都是字符串"abc"。
这种赋值方法非常浪费内存,如果对象很多的时候那么程序的可行性非常差,所以不提倡使用这种方法进行赋值。
2.Sring对象的共享特性:
如果在一个程序中声明了两个String变量,采用直接赋值的方法将同一个字符串付给这两个变量,那么这两个变量将同时指向这个变量,在

堆内存中为这两个变量只分配一块内存空间,例如:String str1="abc";String str2="abc";它的内存存储形式如下图所示:


这个程序在堆内存中只开辟了一块内存空间,空间的内容是"abc"。
3.String对象内容的不变性:
如果声明一个String变量并未这个变量赋值,那么就会在堆内存中为这个对象开辟一块内存空间来存放对象的值,之后无论怎样改变这个对

象的值都不会改变,但是可以改变对象的指向。例如:
String str="abc";
str+="def";执行
System.out.println(str);
将输出:
abcdef
这个程序在内存中的存储过程如图所示:


执行第一条语句在堆内存中开辟了一块内存空间,内容是字符串"abc",执行第二条语句:因为字符串"def"本身就是一个String对象,所以

先在堆内存空间中开辟另一块内存空间,空间内容是字符串"def",然后再开辟一块内存空间是两个字符串的和,也就是字符串"abcdef",

其次将str与字符串"abc"的指向断开,将str指向字符串"abcdef"。

 

posted on 2010-10-16 21:28 冯魁 阅读(277) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

公告

快乐每一天!

Everything is an object!

常用链接

留言簿(2)

随笔档案

学习网站

搜索

最新评论

阅读排行榜

评论排行榜