不能在静态方法里再创建一个静态方法,如main中写静态方法
如,我再main中写了一个静态方法老是报错
查看编译器报错 显示
不存在这个声明
原因是
方法中不能创建方法,别说静态方法中不能创建静态方法,就是普通方法中也不能不能创建普通方法啊。我学迷糊了。
但是访问时没有问题的,静态方法能访问静态成员,普通方法能访问静态成员和非静态成员
例如
另外,静态方法中不能有静态变量,但是访问时没有问题的。
有个老哥说的很清楚
(11条消息) 为什么静态方法里不能有静态变量_@小铁锹的博客-CSDN博客_静态方法里可以有静态变量吗
为什么静态方法里不能有静态变量
在方法内部定义的叫“局部变量”,而不是静态变量,局部变量不能加static,包括protected,private,public这些也不能加,而全局变量是可以的,静态变量是定义在类中,方法体外面的,局部变量是保存在栈中的,而静态变量保存在方法区,局部变量出了方法就会被栈回收了,而静态变量不会,所以局部变量前不能加static关键字,同一时刻,只可能有一块栈内存被当前方法使用,用完了就回收了
可以换一个角度理解,静态变量和常量是在编译时确定的,而方法的局部变量是在运行时确定的,也就是说方法是可以变的,在方法体不在在被对象所使用的时候,方法体也就被回收了,可是如果方法中有静态方法就不可以了,因为静态变量是不可以被回收的,他会随着类的存在而一直存在,所以这是矛盾的,所以方法中不可以有静态变量,
而静态方法中就必须要用静态变量,而局部静态变量也是不可以的,同样是因为这个原因,静态方法是随着类的存在而存在,所以他的变量也要求要一直存在,不允许有变量,甚至this,和super这些会随着方法回收被回收的也不可以有。