锻炼大脑是很有用的,而这最好通过拼图游戏来完成。但是因为我们是程序员,所以我们将拼图游戏放入代码中。现在开始吧:对于此任务,你需要放入使代码开始工作和程序成功完成所需的最小数量的 static 修饰符。
最小数量的 static
- 5
已锁定
评论 (10)
- 受欢迎
- 新
- 旧
你必须先登录才能发表评论
远方
24 六月 2022, 07:55
因为main方法直接调用了method1方法,所用method1是静态方法。method1方法直接调用了method2方法,所以method2方法也是静态方法。因为method2方法调用method3方法进行了实例化,所有method3方法是非静态方法。method3方法直接调用了method4方法,按道理来说method4也应该是静态方法,但是method3本身是非静态方法,非静态方法是可以直接调用非静态方法的,所以method4方法可以是非静态方法。又因为method4方法直接使用了step变量,这说明step变量为静态变量。这样理解是对的吗
+4
z18335776829
21 三月, 12:16
method4方法 调用了 step++;
此时step可以是static变量也可以是实例变量
关键在于 后面 if( step > 1 )
如果step不是static则会导致:
1. step为实例变量,
2. 每次都会因为method3方法中使用new关键字创建一个新的实例,
3. 新实例中的step初始化为0,
4. 在method4方法内将新的实例变量 step++ 更新为 1
5. (step > 1) 条件无法成立所以无法退出 会一直执行 main(null)
这导致程序一直在嵌套执行 main方法一直无法结束,
main方法快结束时又执行一次main方法
每次都在将要结束时再次执行.
会导致当前程序由于main方法嵌套执行太多次,
每次执行main方法都要分配内存导致内存不足
将step设置为static时 在第二次执行main方法时 便会使得step在第二轮执行中从1更新为2 满足条件并结束程序
0
z18335776829
21 三月, 12:22
并不是因为method4方法直接使用step变量 就说明step是静态变量
首先:
静态变量会在类加载后立即被加载进入static内存中 此时没有任何对象被创建
static关键字声明的变量和方法 可以直接使用 类名.标识符 来访问
使用new关键字创建的实例在访问 static变量时 会去类中查找 (当然也可以直接使用 类名.static变量名 来访问)
0
诸葛靓
8 五月 2021, 09:43
if step is static. method4 use step , why isn`t it static?
0
晏楚
7 六月 2021, 02:05
非静态方法可以访问静态变量
+1
durtain
19 四月 2021, 02:15
Why isn't the method4 static?
+1
wedfrgt
24 二月 2021, 14:01
I found out I couldn't
0
Yun Liu
3 一月 2021, 02:59
Why isn't the method3 static?
0
暮鼓晨钟
10 三月 2021, 04:38
new Solution()实例化了一个对象 method3是个实例方法所以不用加static
+1
rojack
4 三月 2020, 08:16
any idea?
0