问题1:Java中只有按值传递,没有C++中的引用传递。java中的按值传递也和C++中的按值传递理解上有区别,不要弄混了。
你需要弄清楚java中变量是什么,首先java中有几个基本类型,比如int型,double型,,,这些数据类型的变量就是它本身,那个变量的名称可以理解为就代表了那个内存中的数据,所以函数调用会拷贝一份,因此在函数中改变不了这个变量的值。但对于java中的对象,就不同了。比如:Date date = new Date(); 这里的date是一个变量,但是它就是这个对象吗?并不是,它只是一个标签(类似python),或者称一个指针(类似C),大家也成它是这个对象的引用(但这里的意思并不是说是C++中的引用),实际上它储存了那个真正对象内存的地址,date就是一个地址,所以函数调用时虽然是按值传递,但是拷贝的是地址,所以函数中的date也还是指向了那个对象,所以就可以改变那个对象了,但是它因为是按值传递,所以还是不能改变date的值,也就是这个地址它改变不了。不知道说的理解不理解?