- 静态 void 主类是程序的入口,无论哪个类调用它......还是它只是该特定类的入口方法......
这到底是如何工作的:
public class init{ public static void main(String[] args){ new init(); } public init(){ System.out.print("hi"); } }
我不明白程序创建自身实例的方式......你为什么不能这样做?
public class init{ public static void main(String[] args){ start(); } public static void start(){ System.out.print("hi"); } }
静态与简单的公共到底做了什么。
6 回答
static
并且public
是不同的关键字。
public
是一个访问修饰符。
static
只需将成员指定为类范围。
public static void main
以便 JVM 知道从何时开始执行您的程序。它只选择一个入口点并忽略其他入口点(如果有)。
无论哪种方式都有效,但这一切都归结为设计。也就是说,您希望您的构造函数显示一条消息,还是将该责任委托给另一个方法?而且该方法也不必是静态的。你可以这样:
new init().start() ;
这就是为什么编程很棒和这样的 PITA ;) 因为有很多方法可以完成一件事。
1)main
是您“运行”Java 类的方式。一个程序可以有多个类,每个类都有自己的main
. 当你运行它时,你指定要运行哪个类。
2)你可以这样做,但通常处理对象的实例而不是类更好。这样做有多种原因。
3)static
表示它是类级别的变量/方法,而不是实例变量/方法。它们可以在类本身(例如,System.out
)或实例(甚至是空引用)上调用,但这被认为是糟糕的形式。
静态 void 主类是您程序的入口,无论哪个类调用它......还是它只是该特定类的入口方法
就是说程序可以从哪个JVM启动的方法,很像main
C/C++程序中的函数。如果您有超过 1 个使用此方法的类,那么您应该告诉 JVM 哪个类将是程序入口。
静态与简单的公共到底做了什么
static
关键字表示方法/变量属于类,简单的 private/protected/public/default 表示方法/变量属于类实例(对象)。
这到底是如何工作的
您正在创建init
该类的一个实例。在 Java 代码中这样做没有错。在类构造函数中,程序会Hi
在控制台打印一个单词。
嗯,你可以做第二件事。可以肯定的是,我只是编译它,它运行,并说:
hi>
静态实际上与公共无关,它是静态与动态的……以及公共与私有的。
请阅读:类中的“静态”关键字有什么作用?
顺便说一句,嘘——你不必有 static 关键字来启动程序。你可以说:
public void main(String[] args)
大多数时候,你会过得去,虽然在你的情况下,你没有!
当我删除第一个static
时,它给出了:
java.lang.NullPointerException
错误 。我需要弄清楚为什么......所以,坚持到static void main
你对 Java 足够了解为止!
进入你的程序
该类创建自己的一个实例,因为最终,它可能需要封装更多数据,而不仅仅是执行 System.out.print
在这种情况下,static 定义了一个 Class 方法——即,一个由类调用的方法,而不是由从该类实例化的对象调用的方法。
Java 的入口点始终是指定的main
方法。在您的第一个示例中,您创建了一个类型的新对象init
(类名是init
)
在您的 init 类的构造函数中,您告诉它写 hi。new
您告诉它使用关键字创建一个新实例。构造函数是匹配类名的方法。
第二个示例不创建任何实例。您调用该start
方法,该方法会打印 hi。您也可以编写init.start();
,因为静态方法总是引用类型(类),而非静态方法总是需要对象引用才能执行。
这是您的第一个示例的修改版本来演示这一点:
public class Init{
public static void main(String[] args){
Init i = new Init();
i.goodBye();
}
public Init(){
System.out.print("hi");
}
public void goodBye() {
System.out.print("Good Bye");
}
}