值传递

Java中,每一个new语句返回的都是一个指针的引用,只不过在大多数情况下Java不关心如何操作这个指针,唯一需要注意的是在给函数传递对象的时候

传值和引用中有静态变量,私有变量,clone等问题,对于基本数据类型和对象变量,存在不一样的操作:

  • 基本类型变量:传递值的副本(副本变,本身不变)
  • 对象变量:传递引用的副本(副本变,本身也变)【即复制指向地址的指针】

    不论Java参数的类型是什么,一律传递的都是参数的副本

在Java中存在一个比较特殊的类型,String,也是对象型变量,只不过String是一个非可变类,使得值传递和引用传递没有区别

 

public class Example{
    String str=new String("good");
    char[]ch={'a','b','c'};
    public static void main(String args[]){
        Example ex=new Example();
        ex.change(ex.str,ex.ch);
        System.out.print(ex.str+" and ");
        System.out.print(ex.ch);
    }
    public void change(String str,char ch[]){
   //引用类型变量,传递的是地址,属于引用传递。
        str="test ok";
        ch[0]='g';
    }
}

答案:

good and gbc
posted @ 2018-04-01 16:32  取什么昵称呢  阅读(89)  评论(0编辑  收藏  举报