首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

String 引述传递or值传递

2013-03-01 
String引用传递or值传递//String是类 ?只要是类它的对象就是按引用传递的,但是String对象本身是不可变的,

String 引用传递or值传递

//String是类 ?只要是类它的对象就是按引用传递的,但是String对象本身是不可变的,不可被修改

//但是可以修改指向该对象的引用啊,使该引用指向别的对象,不指向原来的对象

?

?

?

package com.wuxifu.test;

?

public class test

{

? ? String s2="abc";

? ? StringBuilder stringBuilder = new StringBuilder("bbb");

? ? ? ? ? ? ?public static void main(String[] args)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? test test = new test();//该对象一创建就又两个成员变量 ?s2="abc" ??stringBuilder = new StringBuilder("bbb")

? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? test.change(test.s2,test.stringBuilder);//由于s2 ?stringBuilder ?都是类的实例化对象,所以是引用传递

? ? ? ? ? ? ? ? System.out.println(test.s2);//abc,注意通过上面一个方法不会改变该对象成员变量的引用

? ? ? ? ? ? ? ? System.out.println(test.stringBuilder);//bbbggg,注意通过上面一个方法不会改变该对象成员变量的引用

?

?

? ? ? ? ? ? ??test.change002(test.s2,test.stringBuilder);

? ? ? ? ? ?? ? System.out.println(test.s2);//abc??? ? ?,注意通过上面一个方法不会改变该对象成员变量的引用

? ? ? ? ? ? ? ? System.out.println(test.stringBuilder);//bbbgggggg ?,注意通过上面一个方法不会改变该对象成员变量的引用

? ? ? ? ? ? }

? ? ? ? ? ? ?public void change(String s2,StringBuilder stringBuilder)

? ? ? ? ? ? ?{

? ? ? ? ? ? ? ? //?test.change(test.s2,test.stringBuilder) ?调用了该方法,所以形参 s2?就是指向test.s2

? ? ? ? ? ? ? ?//形参stringBuilder就指向test.stringBuilder

? ? ? ? ? ? ?//变量名的引用相同,但他们还是不同的变量,不同的变量,其中任何一个可以随时指向别的对象,从而改变引用了

? ? ? ? ? ? ? ? ?s2+="???";//s2是局部变量跟形参数一样,虽然得到了test.s2的引用,但是没用,局部变量形参就改变了引用指向别的对象 ?s2+"???"该对象()

? ? ? ? ? ? ? ? ?stringBuilder.append("ggg");//stringBuilder是局部变量跟形参数一样,得到了test.stringBuilder的引用,和它指向同一个对象,形参对它指向的对象进行了修改,即对象本身被修改,所以test.stringBuilder得到对象内容就会改变

? ? ? ? ? ? ? ? ?stringBuilder=new StringBuilder("GGGGGG");//stringBuilder是局部变量跟形参数一样,得到了test.stringBuilder的引用,和它指向同一个对象,但是又没用到,立即该形参就指向别的对象了

? ? ? ? ? ? ?}

?

?

?

? ? ? ? ?public void change002(String s,StringBuilder stringBuilder)

?

? ? ? ? ? ? ?{

?

? ? ? ? ? ? ? ? ?

?

? ? ? ? ? ? ? ? ?s2+="???";//对象的成员变量,非形参

?

? ? ? ? ? ? ? ? ?stringBuilder.append("ggg");//形参修改指向对象的内容

?

? ? ? ? ? ? ? ? ?stringBuilder=new StringBuilder("GGGGGG");//形参改变引用,指向别的对象,跟原来指向的对象断绝关系

?

? ? ? ? ? ? ?}

?

}

//形参如何改变某对象的成员变量的值呢,就是得到该成员变量指向对象的引用,通过引用传递而改变对象的内容,用的好没什么,用的不好就会误导自己,注意

?

热点排行