- Java code
class AA{ public static int f() { return a++; } public static int a; public static int b = f(); public static void main(String args[]) { System.out.println(b); //我觉得应该输出:1 }}
还有一个问题: 为什么在main之外居然可以合法调用到f()方法
------解决方案--------------------
++a 才是1啊
方法f()是ststic静态的
------解决方案--------------------
1.因为是a++,不是++a,所以输出是0不是1。
2。因为f()前面的修饰符是public static ,而AA的访问权限是包访问权限。
------解决方案--------------------
a++的问题
public static int f()
{
a++;
return a;
}
结果为1
为什么在main之外居然可以合法调用到f()方法
f()是静态的
------解决方案--------------------
a++的问题
public static int f()
{
a++;
return a;
}
结果为1
为什么在main之外居然可以合法调用到f()方法
f()是静态的
------解决方案--------------------
------解决方案--------------------
++是自增运算符它有前缀和后缀
如果是前缀++a就是先改变a表示的存储单元的值,然后再使用其值。
a++正好相反。
至于3楼那样的写法,也就是a++和++a也就没有区别了。这里a的值都已经改变了。
这里静态变量和静态方法已经在内存中开辟了空间了在类还没有被实例化的时候就可以调用了
所以你可以在main外调用静态变量和方法了。
------解决方案--------------------
对的啊,++a才会是1
因为f是静态方法嘛,呵呵,静态方法是在类初始化的时候就初始化了,所以在main里面可以调用,楼主可以多看看编程思想,这个东西很多的,呵呵,加油加油啦~~~~~
------解决方案--------------------
方法是静态的,静态变量在类还没有被实例化, public static void main(String args[]) 是静态的,可以调用方法f()
------解决方案--------------------
++a 就时1
方法f()静态的 ,
新人
------解决方案--------------------
又是++問題,學習了
------解决方案--------------------
回答的够详细的了,结吧!
------解决方案--------------------
- Java code
public class AA{ public static int f() {[color=#FF0000] a++ ; return a;[/color] } public static int a; public static int b = f(); public static void main(String args[]) { System.out.println(b); //我觉得应该输出:1 }}