java参数中_Java中的参数传递

在我们讨论 “Java中参数传递的类型” 这个问题之前,我们首先需要对参数传递的类型做一些了解。

众所周知,Java语言的许多概念是传承自C++的,因此我们需要先对C++的参数传递类型做一些了解。C++中参数的传递有三种,分别是:

1、传值

具体操作:在调用函数/方法时,会创建形参列表中的相应对象,并将实参的各项值,复制给新创建的形参。

下面贴一段代码,并进行分析:

#include

using namespacestd;//成绩类:内含语、数、英 三科成绩

classScore{public:doublechinese;doublemath;doubleenglish;//构造方法

Score(){}

Score(double chinese,double math,doubleenglish){this->chinese =chinese;this->math =math;this->english =english;

}

};//学生类:内含年龄、成绩

classStudent{public://构造函数

Student(intage,Score score){this->age =age;this->score =score;

}void setAge(intage){this->age =age;

}voidsetScore(Score score){this->score =score;

}//信息概览

voidshow(){

cout<

}private:intage;

Score score;

};voidchangeStudent(Student student){

student.setAge(99);

}intmain()

{//创建一个学生

Score score(88,90,95);

Student student(17,score);//展示学生信息

student.show();//调用修改函数

changeStudent(student);//再次展示学生信息

student.show();return 0;

}

从执行结果可以看到,两次show()展示的信息是一样的。            这是因为在调用changeStudent()函数时,传的是值          changeStudent()函数会新创建一个形参对象,然后把实参的各个属性拷贝到形参中。

(如果在changeStudent函数的头部和底部分别调用student.show方法,就会发现函数内的student的值确实修改了,不过这个student是changeStudent函数临时创建的,与主函数中的student除了值相同,没有一分钱的关系,他们的地址并不相同 —— 换言之,他们并不是一个对象     这个临时创建的student会在函数执行完后,自动销毁)

2、传指针

具体操作:在调用函数/方法时,会创建一个形参指针,并将实参指针的地址,拷贝给实参指针。                   (看描述就可以看出来,传指针其实就是传值)

#include

using namespacestd;//成绩类:内含语、数、英 三科成绩

classScore{public:doublechinese;doublemath;doubleenglish;//构造方法

Score(){}

Score(double chinese,double math,doubleenglish){this->chinese =chinese;this->math =math;this->english =english;

}

};//学生类:内含年龄、成绩

classStudent{public://构造函数

Student(intage,Score score){this->age =age;this->score =score;

}void setAge(intage){this->age =age;

}voidsetScore(Score score){this->score =score;

}//信息概览

voidshow(){

cout<

}private:intage;

Score score;

};voidchangeStudent(Student *pStudent){

pStudent->setAge(99);

}intmain()

{//创建一个学生

Score score(88,90,95);

Student student(17,score);

//创建一个指针

Student *pStudent = &student;//展示学生信息

student.show();//调用修改函数

changeStudent(pStudent);//再次展示学生信息

student.show();return 0;

}

3、传引用

首先,比较确定的点就是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值