Java记录 -64- Java main函数传参

本文详细介绍了如何在Java中为主函数(main function)传递参数,包括通过命令行直接传参的方法以及在IDE环境下如Eclipse中设置参数的具体步骤。

Java main函数传参:

Java main函数传参,以空格为分隔符,依次列出,双引号中间表示一个参数。

1. 命令行执行:

wKioL1Y9oVHxTHfzAAAxlaxpM3I679.jpg

2. Eclipse中执行带参数的main函数:

选中要执行的带main函数的类,右键选择Run As --> Open Run Dialog...;

wKiom1Y9oQ_zjgZ_AAGn8fVKm3A208.jpg

在弹出的对话框中选择Arguments,并在Program arguments中输入要传递的参数,如:2 3” 4

 

wKiom1Y9oQ7jikJ1AAGbYDNLPec900.jpg


 

 


### Java函数传参的细节 在 Java 编程语言中,所有的参数传递都是基于 **值传递** 的原则。这意味着无论是基本数据类型还是引用数据类型的参数,在调用方法时都会将实际参数的一个副本传递给形式参数。 #### 基本数据类型的值传递 当向方法传递基本数据类型(如 `int`、`double` 等)作为参数时,会创建该变量的一份拷贝并将其传递给方法[^1]。因此,任何对这些参数值的修改都不会影响到原始变量的值。 ```java public static void changePrimitive(int value){ value = 10; } public static void main(String[] args) { int num = 5; changePrimitive(num); System.out.println(num); // 输出仍然是 5 } ``` 上述代码展示了即使在方法内部改变了 `value` 变量的值,原变量 `num` 并未受到影响[^2]。 #### 引用数据类型的值传递 对于引用数据类型(如数组、类实例等),情况稍微复杂一些。虽然 Java 使用的是值传递机制,但实际上被传递的是对象引用的副本。这使得方法可以访问和操作由该引用指向的实际对象的内容[^3]。 考虑下面的例子: ```java public static void testArray(int[] arrayRef){ arrayRef[0] = 99; // 修改第一个元素 } public static void main(String[] args) { int[] myArray = {1, 2, 3}; testArray(myArray); System.out.println(Arrays.toString(myArray)); // 输出 [99, 2, 3] } ``` 在这个例子中,尽管我们说这是值传递,但我们实际上是在传递一个指向相同数组的引用副本。因此,当我们更改此数组的第一个元素时,这种变化也反映到了原始数组上[^4]。 然而需要注意的是,如果尝试重新分配一个新的对象给这个引用,则不会影响原来的对象。这是因为新赋值只会影响局部的方法内的引用副本,而不会改变原始引用所指的对象。 ```java public static void reassignReference(int[] newArray){ newArray = new int[]{7,8,9}; // 创建新的数组并将引用赋予newArray } public static void main(String[] args) { int[] originalArray = {1,2,3}; reassignReference(originalArray); System.out.println(Arrays.toString(originalArray)); // 输出仍为 [1, 2, 3] } ``` 这里可以看到,尽管我们在 `reassignReference` 方法里创建了一个全新的数组,并让 `newArray` 指向它,但这并不会影响到 `originalArray` 所指向的那个数组。 ### 总结 - 对于基本数据类型来说,Java 是完全按照值传递的方式工作的。 - 针对引用数据类型,表面上看像是引用传递,但由于真正发生的事情是把引用本身的值进行了复制后再传递出去,严格意义上讲依然是值传递的一种表现形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值