个人对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( )的追加可以改变参数的值。
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( )的追加可以改变参数的值。
相关文章推荐
- java的引用传递 个人理解
- 个人理解Java中String与StringBuffer类的区别
- JNI学习笔记(二)--C++传递结构体、String、数组对象给Java
- [Java学习笔记] 对象的比较(引用比较、值比较) ^_^个人的理解,请多多关照^_^
- Java基础(11):字符串—深入理解String对象和比较符==和equals的不同
- java中把对象作为参数传递的理解
- 波哥学java, 5.10.3 理解main()方法 String[] args的使用 向 java 中传递参数
- 重新理解Java -- 类型、值、对象、参数传递
- Java String对象以“引用”方式被传递
- JNI学习笔记 C++传递结构体、String、数组对象给JavaC++传递结构体、String、数组对象给Java
- JAVA String对象理解
- Java面向对象个人学习和理解
- 深入理解java String 对象的不可变性
- java中char和String个人理解
- ObjectMapper Java对象与JSON的互换,项目中用到,个人理解
- 黑马程序员_java面向对象相关 个人理解
- 在java中String,对象,Integer(包装类型的)关于引用传递还是值传递
- java.lang.AssertionError 传递对象错误 junit EasyMock使用
- 重新理解Java -- 类型、值、对象、参数传递
- java对象导论,个人对java对象的理解