今天二刷leetcode某题,写的恨不得和以前提交成功的版本一模一样了,还是不行,而且最简单的测试用例都通不过。遂把代码复制到idea调试。发现两个用foreach赋值的数组赋值失败,全是0。
想想也是,java是一个按值传递的语言。所谓“按址传递”只是说引用里面存的值是某个对象的地址。用正常for循环给数组元素赋值是改变某地址指向的某对象的变量的值。而用foreach就相当于int i = list[0];i=100; 这样做根本就不会改变list[0]的值。
综上,foreach用来读数组元素可以,但是别用他赋值了。