结论:Java和Java中所有(函数)参数的传递都是传值!
1.什么是函数参数引用传递?
什么是引用?这个概念在 C++ 中更为常见,其中引用被解释为变量的别名。
1 #include 2 3 class Item 4 { 5 private: 6 int id; 7 public: 8 Item(int _id); 9 void Display(); 10 ~Item(); 11 }; 12 13 Item::Item(int _id){this->id = _id;} 14 15 void Item::Display(){printf("Id:%dn",this->id);} 16 17 Item::~Item(){} 18 19 20 void fun(Item& _item){//函数参数是引用。 21 Item local(200); 22 _item = local;//改变引用_item的指向对象,可以影响外部变量的指向,外部变量也将指向新对象。 23 } 24 25 int main(int argc, char const *argv[]) 26 { 27 Item item(100); 28 item.Display(); //Id:100 29 fun(item);//按引用传递的函数参数,函数内部改变了引用_item的指向对象,所以这里的item指向对象也变了。 30 item.Display();//Id:200 31 return 0; 32 }
2.Java 传值
1 class Item{ 2 3 private int id; 4 5 public Item(int id){ 6 this.id = id; 7 } 8 9 public void Display(){ 10 System.out.println("Id:" + this.id); 11 } 12 13 } 14 15 16 public class Main { 17 18 public static void fun(Item _item){ 19 Item local = new Item(200); 20 _item = local;//函数内部改变了参数的指向,如果这里是引用,则外部的变量也将改变指向新对象。 21 } 22 23 public static void main(String[] args) { 24 Item item = new Item(100); 25 item.Display(); //Id:100 26 fun(item); 27 item.Display(); //Id:100 28 } 29 30 }
3.按值传递
function fun(_item) { local = new Object; local.id = 200; _item = local;//函数内部改变了参数的指向,如果这里是引用,则外部的变量也将改变指向新对象。 } let item = new Object(); item.id = 100; console.log(item); //{ id: 100 } fun(item); console.log(item);//{ id: 100 }
© 版权声明
本站下载的源码均来自公开网络收集转发二次开发而来,
若侵犯了您的合法权益,请来信通知我们1413333033@qq.com,
我们会及时删除,给您带来的不便,我们深表歉意。
下载用户仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,访问及下载者下载默认同意本站声明的免责申明,请合理使用切勿商用。
THE END
暂无评论内容