代码如下:
public static int length(ListNode head) {
int len = 0;
while (head != null) {
len++;
head = head.next;
}
return len;
}
这个代码看起来是正确的,但实际上问题很大,因为函数内部改变了传入的参数的值,参数是reference type, 这样会导致参数的值的变化。因此要记住:无论何时,不能修改传入的参数,如果需要用到,则新建一个空间复制参数,再进行操作:
public static int length(ListNode head) {
ListNode cur = head;
int len = 0;
while (cur != null) {
len++;
cur = cur.next;
}
return len;
}
博客指出一段Java代码看似正确,实则存在问题,函数内部改变了传入的reference type参数的值。强调无论何时都不能修改传入参数,若需使用,应新建空间复制参数后再操作。
281

被折叠的 条评论
为什么被折叠?



