Java q关于类结构

时间:2012-10-19 23:20:58

标签: java class data-structures static

  1. 静态void主类是程序的入口,无论哪个类调用它......或者它只是该特定类的入口方法......
  2. 这究竟是如何运作的:

    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");
        }
    }
    
  3. 静态做什么与简单公众有关。

6 个答案:

答案 0 :(得分:1)

staticpublic是不同的关键字。 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)

  1. 进入您的计划

  2. 该类创建了自己的实例,因为最终,它可能需要封装更多的数据,而不仅仅是执行System.out.print

  3. 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");
    }
}