您的位置:首页 > 编程语言 > Java开发

个人对Java中String对象的传递的理解(错误之处,请给与纠正,

2009-08-02 17:17 309 查看
对于Java的String我个人觉的他对理解面向对象有很大的帮助。

1、String是一种引用类型,所以它具备引用类型的特性,

String s1="s";

String s2= new String("s");

这两种方式的赋值相等的,s1与s2是不同的两个对象,因为他们的地址不同,但是他们对应相同的值。

2、String对象是不可变的,正因为String具有这两种赋值方式,在String对象作为参数传递时,它本身的数值是不会随着形参的值改变而改变的,如:

public class Method{

String str = new String("good"); //创建了一个String对象

char[] ch = {'a','b','c'};

public static void main(String[] args)

{

Methodex=new Method();

ex.change(ex.str,ex.ch);

System.out.print(ex.str+"---");//good---

System.out.print(ex.ch);//gbc

}

public void change(String str,char ch[])

{

str="test ok";//重新创建了一个对象,本身的String对象的值没有变化

ch[0]='g';//改变引用数组中的值

}

}

String与数组对比来看,可以说成String对象的参数传递是引用类型传递的特殊形式。

3、因为String对象的不可变的特性,String对象可以通过“+”或者“concat( )”追加字符串。

但是在字符串String和StringBuffer对象的追加上两者又有区别,concat( )与append( )的区别在于,作为参数传递的追加,

因为String对象的不可变性,concat()方法的追加无效;而StringBuffer对象的append( )的追加可以改变参数的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: