值传递 & 引用传递
- 传递时总是整出独立的一份,就认为是“按值传递”;传递时变量还指向老的内存地址,就认为是“引用传递”。
- “java总是采用按值调用”,这一句是说,哪怕按“引用传递”的变量,其实也是新的引用,这个新的引用和老的引用都指向同一个内存地址。
- 举个例子,一个门牌上有内存地址,在传递时,总是新拷贝出新的门牌,但是新、老门牌上写的地址是一样的,指向内存的同一个区域。这就是所谓的“java总是采用按值调用”
public static void main(String[] args) {
int a = 10;
f(a);
System.out.println(a);
Number b = new Number(5);
g1(b);
System.out.println(b.val);
g2(b);
System.out.println(b.val);
int[] c = { 1, 2, 3, 4 };
g3(c);
System.out.println(c[0]);
g4(c);
System.out.println(c[0]);
}
反转链表

public ListNode reverseList(ListNode head) {
ListNode pre = null;
ListNode next = null;
while (head != null) {
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}