4.4 参数传递

一时失言乱红尘 2021-09-29 01:32 407阅读 0赞
  • 基本数据类型参数的传值
  • 引用类型参数的传值

一:基本数据类型参数的传值

比如方法f

  1. int f(int a){
  2. return a;
  3. }

当方法被调用时,如果方法有参数,参数必须要实例化,即参数变量要有具体的值,如对象a调用方法f

  1. a.f(1);

注意:对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别

二:引用类型参数的传值

当参数是引用类型时,“传值”传递的是变量中存放的“引用”,而不是变量所引起的实体。

对于两个同类型的引用型变量,如果具有同样的引用,就会有同样的实体

改变参数变量所引起的实体,就会导致原变量的实体发生同样的变化

改变参数中存放的“引用”,不会影响其传值的变量中存放的“引用”

比如:

  1. package cn.test;
  2. public class Circle {
  3. double radius; //半径
  4. Circle(double r){ //带参数的构造方法
  5. radius=r;
  6. }
  7. double getRadius(){ //获得半径
  8. return radius;
  9. }
  10. void setRadius(double r){ //修改半径
  11. radius=r;
  12. }
  13. }
  14. package cn.test;
  15. public class Circular {
  16. Circle bottom;
  17. double height;
  18. //将Circle类的实例引用传递给bottom,这样bottom可以调用Circle的方法了,比如获取半径的方法
  19. Circular(Circle c,double h){
  20. bottom=c;
  21. height=h;
  22. }
  23. double getBottomRadius(){ //获得底半径
  24. return bottom.getRadius();
  25. }
  26. public void setBottomRadius(double r){ //修改底半径
  27. bottom.setRadius(r);
  28. }
  29. }
  30. package cn.test;
  31. public class maintest {
  32. public static void main(String []args){
  33. //在分配内存后,执行构造方法的语句,对成员变量进行初始化操作,这时候半径就是10.0了(double类型)
  34. //当然了,如果构造方法是无参数的,也没有定义有参数的构造方法,那么半径默认是0.0
  35. Circle circle=new Circle(10);
  36. System.out.println(circle);
  37. System.out.println(circle.getRadius());
  38. Circular circular=new Circular(circle,10);
  39. System.out.println(circular);
  40. System.out.println(circular.getBottomRadius());
  41. // bottom和circle引用一样,所以有同样的实体
  42. System.out.println(circular.bottom);
  43. double r=8888;
  44. // 改变参数变量所引起的实体,就会导致原变量的实体发生同样的变化
  45. circular.setBottomRadius(r);
  46. System.out.println(circle.getRadius());
  47. System.out.println(circular.getBottomRadius());
  48. // 引用发生变化
  49. circle=new Circle(20);
  50. System.out.println(circle);
  51. // 获得了新的实体,radius值为20
  52. System.out.println(circle.getRadius());
  53. // 但是circle先前的实体不被释放,因为这实体还是circular的bottom的实体
  54. System.out.println(circular.getBottomRadius());
  55. }
  56. }

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjcxNzkyOA_size_16_color_FFFFFF_t_70

发表评论

表情:
评论列表 (有 0 条评论,407人围观)

还没有评论,来说两句吧...

相关阅读

    相关 参数传递

    Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参

    相关 java参数传递

    1.对象就是传引用 2.原始类型就是传值 3.String,Integer, Double等immutable类型因为没有提供自身修改的函数,每次操作都是新生成一个对象

    相关 java参数传递

    1.对象就是传引用 2.原始类型就是传值 3.String,Integer, Double等immutable类型因为没有提供自身修改的函数,每次操作都是新生成一个对象

    相关 Java参数传递

    /\下面的对比说明Java参数传递问题: 基本类型:形式参数的改变对实际参数没有影响。 引用类型:形参的改变直接影响实际参数 \/ public class C

    相关 参数传递

    一.形参和实参的区别: 形参就是形式参数,它出现在函数定义中,是在定义的过程名或函数后面的变量,在整个函数体内都可以使用,但离开该函数则不能使用。 实参就是实际参数,是在调