欢迎来到天天文库
浏览记录
ID:46702077
大小:73.00 KB
页数:3页
时间:2019-11-26
《探析Java中的字符串》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、探析Java中的字符串蹇旭邙可坝师范高等专科学校计算机科学系,四川成都)[摘要]对于Java语言中的字符串,常常被Java编程人员尤其是初学者误用,文章通过对Java中与字符申有关的两个类String、String-Buffer进行深入分析,掌握Java字符串的本质,从而做到对字符串准确而有效的使用。[关键词]Java;字符串;StringStringBuffer对于Java语言中的字符串,常常被Java编程人员尤其是初学者误用,文章通过对Java-p与字符串有关的两个类String、String-Buffer
2、进行深入分析,掌握Java字符串的本质,从而做到对字符审准确而有效的使用。1Java的基本数据类型与引用类型在研究Java的字符串之前,我们有必要先弄清楚基本数据类型和引用类型的区别,Java屮八大基木数据类型是:short、int>Iong、fIoat、doubIe、byte、char、booleano基本数据类型的引用和数据一般都存储在栈中;引用类型一般将引用存放在栈中,具体对象则存放在堆中,栈中的引用指向堆中的对象,Java屮的类本质上屈于引用类型。例如:1nta=3;Objectob=newObject
3、();以上第一条语句,在栈中定义一个被称为a的整型变量的引用,然后在栈中查找是否存在值为3的存储单元,如果存在,那么直接将a指向这个单元,否则就开辟一个存放3的存储单元,再将a指向这个存储单元。以上第二条语句,在栈屮定义一个被称为ob的Object变量的引用,在堆屮存储Object对象的具体数据,ob指向堆中的这个Object对象。基本数据类型,使用“二”直接赋值;用类创建对象,则使用new关键字。使用new关键字创建对象的特点是,每new—次,都将在内存中创建一个新对彖,即使内存里有完全相同的对象存在也不例外
4、。例如:Objectob1=newObject(“test”);0bjectob2二newObject"(testn);虽然两个对象的数据都相同,但内存中依然创建了两个对象,ob1与ob2分别指向这两个对象。2String类的描述及特点String类代表字符串,Java中所有字符串字面值(如〃abc〃)都作为此类的实例来实现,字符串是常量,它们的值在创建之后不能改变。很多人对此感到困惑,因为经常在程序里用到类似这样的语句:Stringstr二”abc”;str二”def”;既然字符串是常量,为什么定义的str可
5、以多次赋值呢?实际上,这里所说的“字符串是常量”指的是上述语句屮等号右边的”abc”是一个常量,一旦在内存中创建,就不能再被修改;str只是”abc”的一个引用,当我们使用str二”def”后,str将会指向内存中的”def”这个字符串,原来的”abc”并没有被改变。String是一个特殊的类,本身屈引用类型,但却具冇基本数据类型的一些特征。这休现在可以用两种方式创建字符串对彖:使用new关键字和使用“二”直接引用。第一种,使用new关键字,例如:Stringstr1=newString(abc,?);Stri
6、ngstr2=newString“(abc”);通过前面的分析已经得知,上述两条语句定义了两个String变量的引用st门和str2,在内存中创建了两个”abc”对象,str1和str2分别指向这两个String对象。第二种,使用“二”直接引用。例如:Stringstr1="abc"定义了一个被称为str1的String变量的引用,然后搜寻内存中是否存在”abc”,如果不存在,则开辟内存空间,创建”abc”,然后将st门指向它;如果已经存在,则直接将stC指向这个已经存在的”abc”o如果在程序中再加一条Str
7、ingstr2="abc”系统会如何处理?同样,先定义一个被称为str2的String变量的引用,然后在内存中查找是否已经存在”abc”这个对象,如果存在,则直接将str指向这个”abc”,由于内存中已经存在一个st门所指向的”abc”,因此str2将直接指向st门所指向的”abc”而不会再创建一个新的”abc”,也就是说,对于Stringst门二”abc”;Stringstr2="abc";虽然定义了两个引用,但内存中只存在一个”abc”,两个引用指向的是同一个”abc”o了解了String类的实质和特点后,
8、再进行String对象的比较运算,就很简单了。在一些文章[1]中已有详细论述,这里简单说明一下,使用“二二”比较两个字符吊,比较的是两个字符申是否为同一个对象。某些时候又确实需要比较两个字符串的值,为此String类重写了java.lang.Object的“equals()”方法,重写后的方法比较的是两个字符串对彖的值。对字符串最常进行的操作之一就是将多个字符串进行连接。Java允许使
此文档下载收益归作者所有