关于变量的作用域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;
}
}
/**
*
* 这里需要解释一下,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;
}
}
相关文章推荐
- 关于C的一些变量关系的杂谈 (编译 作用域 extern)
- 关于Python中的变量作用域
- Swoole 关于变量作用域的问题
- 关于JavaScript中var声明变量作用域的推断
- JavaScript关于变量作用域的一道面试题
- 关于变量的作用域02
- 关于tensorflow的变量(variable) 变量作用域(variable_scope) 名字作用域(name_scope)的学习记录
- 关于访问修饰符和变量的作用域
- 关于局部变量,全局变量,作用域,生命期的概念,程序内存分析
- 这个关于c中break的跳转位置以及声明变量的作用域的问题。
- 关于变量作用域的一点整理
- C++拷贝函数的小结,关于变量的作用域等---ShinePans
- 关于Scope,Compensation,Catch中的变量作用域!
- 关于ibatis中mysql的@变量问题作用域、污染问题
- 关于python的变量作用域
- 关于闭包和变量的作用域的问题
- js面试题,关于变量提升,作用域,全局变量
- 03.关于Shell变量那些事
- 关于js 变量作用域的小记录
- 关于javascript函数中变量的作用域