java – 静态方法中的局部变量是否也是静态的?
我想知道如果我们以静态方法声明它们,所有局部变量都将变为静态的?
例如: public static void A(){ int x [] = {3,2}; changeX(x); for (int i = 0; i< x.length; i++){ System.out.println(x[i]); // this will print -1 and 1 } } private static void changeX(int[] x){ x[0] = -1; x[1] = 1; } 据我所知,Java总是通过值传递,但是为什么X的状态在进行changeX调用后发生了变化?有人可以解释一下吗任何人都可以解释Java如何处理内存分配方面的静态变量?如果我们将一个静态变量作为一个参数传递给函数会发生什么(我知道人们通常不会这么做) 解决方法
大多数问题的答案是“与任何其他变量相同”.
静态方法中的局部变量只是静态方法中的局部变量.它们不是静态的,它们不是特别的. 静态变量保存在与对应的Class对象相连的内存中;静态引用变量引用的任何对象都只能存在于常规堆中. 当一个静态变量传递给一个方法作为参数时,绝对没有任何有趣的事情发生. 关于你的代码中的情况: >想象一下,你在一个字符串上有一个玩具气球(气球是你的数组对象,字符串是在A()中声明的字符串的引用) 真的很简单! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |