应该得到的结果是0,但我不明白为什么?数组通过其他方法传递时发生更改。
public class Tester { public static int function1 (int [] arr) { arr= function2(arr); return arr[0]; } public static int[] function2 (int [] arr) { arr = new int[4]; return arr; } public static void main(String[] args) { int arr[] = {1,2,3,4}; System.out.print(Tester.function1(arr)); } } 我希望从打印出来的答案中得到4。
你正在function2中创建一个全新的数组。这就是为什么默认情况下它在每个索引中存储0的原因。当你返回时,新数组仅是返回。对于每个索引,它将仅打印0。为什么要在函数2中创建新数组?如果必须打印4,则只需仅传递现有数组并打印arr[3]。
这是代码:-
public class Tester { public static int function1 (int [] arr) { arr= function2(arr); //return arr[0]; return arr[3]; } public static int[] function2 (int [] arr) { //arr = new int[4]; return arr; } public static void main(String[] args) { int arr[] = {1,2,3,4}; System.out.print(Tester.function1(arr)); } }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。