不能在静态方法里再创建一个静态方法,如main中写静态方法

不能在静态方法里再创建一个静态方法,如main中写静态方法

如,我再main中写了一个静态方法老是报错

 查看编译器报错 显示

 不存在这个声明

原因是   

方法中不能创建方法,别说静态方法中不能创建静态方法,就是普通方法中也不能不能创建普通方法啊。我学迷糊了。

但是访问时没有问题的,静态方法能访问静态成员,普通方法能访问静态成员和非静态成员

例如

 

 

另外,静态方法中不能有静态变量,但是访问时没有问题的。

 

有个老哥说的很清楚

(11条消息) 为什么静态方法里不能有静态变量_@小铁锹的博客-CSDN博客_静态方法里可以有静态变量吗

为什么静态方法里不能有静态变量

在方法内部定义的叫“局部变量”,而不是静态变量,局部变量不能加static,包括protected,private,public这些也不能加,而全局变量是可以的,静态变量是定义在类中,方法体外面的,局部变量是保存在栈中的,而静态变量保存在方法区,局部变量出了方法就会被栈回收了,而静态变量不会,所以局部变量前不能加static关键字,同一时刻,只可能有一块栈内存被当前方法使用,用完了就回收了
可以换一个角度理解,静态变量和常量是在编译时确定的,而方法的局部变量是在运行时确定的,也就是说方法是可以变的,在方法体不在在被对象所使用的时候,方法体也就被回收了,可是如果方法中有静态方法就不可以了,因为静态变量是不可以被回收的,他会随着类的存在而一直存在,所以这是矛盾的,所以方法中不可以有静态变量,
而静态方法中就必须要用静态变量,而局部静态变量也是不可以的,同样是因为这个原因,静态方法是随着类的存在而存在,所以他的变量也要求要一直存在,不允许有变量,甚至this,和super这些会随着方法回收被回收的也不可以有。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值