这究竟是如何运作的:
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");
}
}
静态做什么与简单公众有关。
答案 0 :(得分:1)
static
和public
是不同的关键字。
public
是访问修饰符。
static
只是指定一个成员为班级的成员。
public static void main
是这样的,JVM知道在哪个点开始执行你的程序。它只选择一个入口点而忽略其他入口点。
无论哪种方式都有效,但这一切都归结为设计。 那是您希望构造函数显示消息,还是将该责任委托给另一个方法?而且该方法也不必是静态的。 你可以这样:
new init().start() ;
这就是为什么编程很棒而且这样的PITA;)因为有很多方法可以完成一件事。
答案 1 :(得分:1)
1)main
是你“运行”Java类的方式。一个程序可以有多个类,每个类都有自己的main
。运行时,指定要运行的类。
2)你可以这样做,但通常处理对象的实例而不是类是更好的。这样做有很多原因。
3)static
表示它是类级变量/方法,而不是实例变量/方法。它们可以被称为“在”类本身上(例如,System.out
)或在一个实例上(甚至是一个空引用),但这被认为是糟糕的形式。
答案 2 :(得分:1)
静态void main类是程序的入口,无论哪个类调用它......或者它只是该特定类的入口方法
这是说JVM程序可以启动的方法,与C / C ++程序中的main
函数非常相似。如果你使用这个方法有多个类,那么你应该告诉JVM哪个类是程序入口。
静态做什么与简单公开
static
关键字表示方法/变量属于类,简单地说private / protected / public / default表示方法/变量属于类实例(对象)。
这究竟是如何运作的
您正在创建init
类的实例。在Java代码中执行此操作没有任何错误。在类构造函数中,程序将在控制台中打印Hi
个字。
答案 3 :(得分:0)
嗯,你可以做第二件事。可以肯定的是,我只是编译它,它跑了,然后说:
hi>
静态与公众无关,它是静态的与动态的......以及公共与私有。
请阅读:What does the 'static' keyword do in a class?
顺便说一下, shhh - 您不必使用static关键字来启动程序。你可以只说:
public void main(String[] args)
大多数时候,你会过去,虽然在你的情况下,你没有!
当我删除第一个static
时,它会给出一个:
java.lang.NullPointerException
错误。我需要弄清楚为什么......所以,坚持static void main
直到你对Java了解得足够好!
答案 4 :(得分:0)
进入您的计划
该类创建了自己的实例,因为最终,它可能需要封装更多的数据,而不仅仅是执行System.out.print
static,在本例中,定义了一个Class方法 - 即一个由类调用的方法,而不是由该类实例化的对象。
答案 5 :(得分:0)
Java的入口点始终是指定的main
方法。
在第一个示例中,您将创建一个init
类型的新对象(类名称为init
)
在你的init类的构造函数中,你告诉它写你好。您告诉它使用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");
}
}