![零基础Java学习笔记](https://wfqqreader-1252317822.image.myqcloud.com/cover/177/36710177/b_36710177.jpg)
4.5 参数传值
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt005_38.jpg?sign=1739278489-mb5J0r17wtLhTuhmmYEx3BbVFwE606tL-0-8aafec9a1b946a1ef889c4b2ab67d0d8)
在Java 应用程序中,如果在声明方法时包含了形参声明,则在调用方法时必须给这些形参指定参数值。在调用方法时,实际传递给形参的参数值被称为实参。
4.5.1 传值机制
Java 方法中的参数传递方式只有一种,即值传递。所谓的值传递,是将实际参数的副本传递到方法内,而参数本身不会受到任何影响。例如,用户去银行开户需要身份证原件和复印件,而身份证原件和复印件上的内容完全相同。当复印件上的内容改变时,原件上的内容不会受到任何影响。也就是说,方法中参数变量的值是调用者指定值的拷贝。
4.5.2 基本数据类型的参数传值
对于基本数据类型的参数,向该参数传递值的级别不能高于该参数的级别。例如,不可以向int 型参数传递一个float 值,但可以向double 型参数传递一个float 值。
【例4.4】 在Point 类中定义一个add() 方法,然后在Example 类的main() 方法中创建Point 类的对象,然后调用该对象的add(int x,int y) 方法,当调用add() 方法时,必须向add() 方法中传递两个参数。Point 类的具体代码如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt005_39.jpg?sign=1739278489-KFRaUq8vnHrB8ZqlsycCXvzHq6AXPabt-0-4da4b3b62742afd23f659120b2b962e8)
Example 类的具体代码如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt005_40.jpg?sign=1739278489-0GinkWEjBQwcJ9DGpPpZhO6evIY1qCWK-0-7aadc744520bbabaa4bcef0309a44184)
4.5.3 引用类型参数的传值
当参数是引用类型时,传递的值是变量中存放的 “引用”,而不是变量所引用的实体。两个相同类型的引用型变量,如果具有同样的引用,则会具有同样的实体,因此,如果该参数表示变量所引用的实体,则会导致原变量的实体发生同样的变化;然而,改变参数中存放的 “引用” 不会影响向其传值的变量中存放的 “引用”。
【例4.5】 Car 类为汽车类,负责创建一个汽车类的对象,FuelTank 类是一个油箱类,负责创建油箱的对象。Car 类创建的对象在调用run(FuelTank ft) 方法时需要将FuelTank 类创建的油箱对象ft 传递给run(FuelTank ft) 方法。该方法会消耗汽油,油箱中的汽油会减少。
FuelTank 类的具体代码如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt005_41.jpg?sign=1739278489-6pfuerYH5p4s7ET8iyHEEtT7Sg4MFZkY-0-bc8a20eb8aea181ea9ce6900c1a69440)
Car 类的具体代码如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt005_42.jpg?sign=1739278489-vibUAu0T2ZDDMOFZ4Hn75sNR4ULtTZHR-0-5955f3f8b1a48591475d209ac2612e57)
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt005_43.jpg?sign=1739278489-2BeXVKuQ3Mt8JSfX0Y6Az3LTniQSswQk-0-0060a3fdc8839648bb6e67ea03308280)
测试类Example2 的具体代码如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt005_44.jpg?sign=1739278489-4S60SRsljMaAQafYJRaywecioS0kIOvw-0-545e23de7556b16878914be7be399361)
程序运行结果如图4.9 所示。
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt005_45.jpg?sign=1739278489-n4hvcMOtT1W9OuA48R7gXZQTqNrhbLbP-0-92f8f532e6127f82ee055ef64ba3c745)
图4.9 汽车消耗油量的计算结果