您的位置:首页 > 其它

关于变量的作用域03

2010-05-05 22:03 246 查看
package bisic;
/**
*
* 这里需要解释一下,java基本类型(byte、int、char、long、float、double、boolean和short)是传值,也就是传的是副本,
* 而其余传的是引用(所谓引用传递就是把对象的引用地址传进函数,而不是像值传递那样产生一个副本),
* 对于字符串对象来说,虽然在参数传递的时候也是引用传递,
* 但是java虚拟机在函数内部对字符串对象进行了特殊处理--视String对象为常量(final)
* 所以对传进来的引用地址所引用的string对象比能直接进行修改,而是产生一个副本对其进行操作,对其进行的操作不会影响原来的值。
* 这就是为什么字符串和数组都是引用传递,字符串没变而数组变了的原因
*
*/
public class VariableZion2 {

static String str="ggggggg";
static char ch[]={'a','b','c'};
static int i = 1;

public static void main(String[] args) {

VariableZion2 cha=new VariableZion2();
cha.change(str,ch,i);
//对于一个对象调用方法,起不起作用,看它传递的是引用(可以改变),
//还是基础类型或者final类型的值传递,(操作的是副本)
System.out.println(str);//没变
System.out.println(ch);//传递引用,改变
System.out.println(i);//没变
}
void change(String str,char ch[],int i){
str = "hello ok";
//this.str = str;
//这样的话就改变了 因为这里它们都是成员变量,通过方法里的局部变量给成员变量赋值了
//想想构造函数的作用
ch[0] = 'k';
i = 100;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: