public class Foo { int num = 1; public void change(){ num = 2; } public void change(int num){ num = 3; } public void change(Foo pt){ pt.num = 4; } public static void main(String[] args) { Foo pt = new Foo(); int num = 5; pt.change(); System.out.println("1->:"+ pt.num); pt.change(num); System.out.println("2->:"+ pt.num); pt.change(pt); System.out.println("3->:"+ pt.num); }结果为什么是1->:2 2->:2 3->:4
时间: 2024-02-14 15:31:14 浏览: 30
这是因为在Java中,方法参数传递是按值传递的。让我们逐行分析代码来解释结果:
1. 创建一个名为pt的Foo对象,并将其num属性初始化为1。
2. 创建一个名为num的整数变量,并将其初始化为5。
3. 调用pt的change()方法,该方法将pt的num属性值更改为2。
4. 打印输出pt的num属性值,即1(因为change()方法中的num是一个局部变量,对外部的num没有影响)。
5. 调用pt的change(int num)方法,并传入外部的num变量作为参数。在方法内部,num参数被重新赋值为3,但这并不会影响外部的num变量。
6. 打印输出pt的num属性值,仍然是1(因为change(int num)方法中的num是一个局部变量,对外部的num没有影响)。
7. 调用pt的change(Foo pt)方法,并传入pt对象本身作为参数。在方法内部,通过pt对象修改了其num属性值为4。
8. 打印输出pt的num属性值,现在是4(因为change(Foo pt)方法中修改了pt对象的num属性)。
因此,最终的输出结果是:
1->:2
2->:2
3->:4
相关问题
using pFunc = void(*)(int); 语法分析
这行代码定义了一个函数指针类型 `pFunc`,它可以指向一个参数为 `int`,返回值为 `void` 的函数。具体解释如下:
- `using` 是 C++11 引入的关键字,用于定义类型别名。这里使用 `using` 关键字定义了一个函数指针类型别名 `pFunc`。
- `void` 表示函数的返回类型,即该函数不返回任何值。
- `(*)` 表示该类型别名是一个指向函数的指针类型。
- `(int)` 表示该函数指针类型所指向的函数的参数类型为 `int`。
因此,`pFunc` 类型的变量可以指向一个参数为 `int`,返回值为 `void` 的函数。例如,可以这样定义一个 `pFunc` 类型的变量并将其指向一个函数:
```cpp
void foo(int x) {
// ...
}
pFunc ptr = &foo; // 将 ptr 指向 foo 函数
```
public static void Main() { Console.WriteLine(Foo()); } public static int Foo(int i=2) { if (i <= 0) return 0; else if (i > 0 && i <= 2) return 1; else return Foo(i - 1) + Foo(i - 2); }创建一个数组,把返回值放到数组当中
您可以按照以下步骤创建一个数组,并将 Foo() 方法的返回值存储到数组中:
1. 在 Main() 方法中,创建一个长度为 10 的整型数组:
```
int[] resultArray = new int[10];
```
2. 在输出语句之前,使用 for 循环遍历数组,并在循环体中调用 Foo() 方法,并将返回值存储到数组中:
```
for (int i = 0; i < resultArray.Length; i++) {
resultArray[i] = Foo(i+1);
}
```
3. 在 Console.WriteLine() 语句中,输出数组的值:
```
Console.WriteLine(string.Join(", ", resultArray));
```
完整代码如下:
```
public static void Main() {
int[] resultArray = new int[10];
for (int i = 0; i < resultArray.Length; i++) {
resultArray[i] = Foo(i+1);
}
Console.WriteLine(string.Join(", ", resultArray));
}
public static int Foo(int i=2) {
if (i <= 0) return 0;
else if (i > 0 && i <= 2) return 1;
else return Foo(i - 1) + Foo(i - 2);
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)