相关疑难解决方法(0)

'static'关键字在一个类中做什么?

具体来说,我正在尝试这段代码:

package hello;

public class Hello {

    Clock clock = new Clock();

    public static void main(String args[]) {
        clock.sayTime();
    }
}
Run Code Online (Sandbox Code Playgroud)

但它给出了错误

无法访问静态方法main中的非静态字段

所以我把声明改为clock:

static Clock clock = new Clock();
Run Code Online (Sandbox Code Playgroud)

它奏效了.在声明之前放置该关键字是什么意思?对于该对象可以做什么,它究竟会做什么和/或限制什么?

java oop static language-features restriction

432
推荐指数
16
解决办法
80万
查看次数

使用很多静态方法是件坏事吗?

当该类不需要跟踪内部状态时,我倾向于将类中的所有方法声明为静态.例如,如果我需要将A转换为B并且不依赖于可能变化的某个内部状态C,则创建静态转换.如果有一个我希望能够调整的内部状态C,那么我添加一个构造函数来设置C并且不使用静态转换.

我阅读了各种建议(包括在StackOverflow上),不要过度使用静态方法,但我仍然无法理解上面的经验法则错误.

这是一种合理的方法吗?

language-agnostic static-methods

90
推荐指数
8
解决办法
3万
查看次数

为什么静态根据上下文有不同的含义?

据我了解:

  • 静态类仅适用于嵌套类,这意味着嵌套类没有对外部类的引用.

  • 静态字段有点像全局变量,因为它只有一个实例,并且由同一个类的其他成员共享.

  • 静态方法意味着即使对象尚未实例化也可以调用它.

我正在介绍Java课程,并试图巩固我的知识,并试图找出为什么不使用不同的关键字来表示不同的含义.

java

56
推荐指数
6
解决办法
3009
查看次数

Java中的main方法是否必须是静态的?

主要方法(Java请求您在类中拥有)是否必须是静态的?例如,我有这个代码

public class Sheet {

    public static void main(String[] args) {
        myMethod();
    }

    public void myMethod() {
        System.out.println("hi there");
    }

}
Run Code Online (Sandbox Code Playgroud)

这给了我错误

无法对main的非静态调用方法进行静态引用

如果我清楚了,我从方法调用的任何方法都main必须是静态的,并且我从静态方法调用的每个方法都必须是静态的.

为什么我的全班(如果我们更进一步,我的整个程序)和方法必须是静态的?我怎么能避免这种情况?

java methods static program-entry-point

1
推荐指数
1
解决办法
2121
查看次数

为什么我们需要transient关键字来防止序列化?[爪哇]

我不明白为什么我们需要瞬态关键字来防止特定数据成员的序列化。我们也可以将其设为静态,因为静态数据成员无法序列化。如果我错了,请指导我!

java

-2
推荐指数
1
解决办法
274
查看次数