值传递
在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