【发布时间】:2018-07-17 05:04:22
【问题描述】:
1 public class Horse {
2 Horse same;
3 String jimmy;
4
5 public Horse(String lee) {
6 jimmy = lee;
7 }
8
9 public Horse same(Horse horse) {
10 if (same != null) {
11 Horse same = horse;
12 same.same = horse;
13 same = horse.same;
14 }
15 return same.same;
16 }
17
18 public static void main(String[] args) {
19 Horse horse = new Horse("youve been");
20 Horse cult = new Horse("horsed");
21 cult.same = cult;
22 cult = cult.same(horse);
23 System.out.println(cult.jimmy);
24 System.out.println(horse.jimmy);
25 }
26 }
当 Java 解释器运行第 22 行时,为什么 cult.same(horse) 返回一个指向“Horse cult”的指针,而不是返回指向相同的“Horse horse”的指针。第 11 行)指向?
【问题讨论】:
-
Horse类中有一个字段和一个方法,它们都称为same。我很惊讶您的代码甚至可以编译,但无论如何都不要这样做。 -
这不是实际代码,它来自数据结构类中的讨论部分
标签: pointers scope pass-by-value