初学者 java学习 关于static main的疑惑

原创 2016年08月30日 11:26:04

笔者刚开始了java学习,由于也不是相关专业的,刚学起来有点吃力。

学的时候一直在想,为什么一直要public  static void main(){ }

在看《head first java》的时候更加疑惑,只会照着书上敲代码,但是很多疑惑。特别是一会用静态方法,一会又不用。比如这一段代码:

import javax.sound.midi.*;
public class MiniMusicPlayer1 {
  public static void main(String[] args) {
    try {
      Sequencer sequencer=MidiSystem.getSequencer();
      sequencer.open();


      Sequence seq=new Sequence(Sequence.PPQ,4);


      Track t=seq.createTrack();


      for(int i=5; i<61; i+=4) {
      System.out.println(i);
        t.add(makeEvent(144,1,i,100,i));
        t.add(makeEvent(128,1,i,100,i+2));
      }


      sequencer.setSequence(seq);
      sequencer.setTempoInBPM(220);
      sequencer.start();
    } catch(Exception ex) {
      ex.printStackTrace();
    }
  }


  public static MidiEvent makeEvent(int comd,int chan,int one,int two,int tick) {
    MidiEvent event=null;
    try {
      ShortMessage a=new ShortMessage();
      a.setMessage(comd,chan,one,two);
      event=new MidiEvent(a,tick);
    } catch(Exception x) {}
    return event;
  }
}

以为查阅网上资料这么说的:静态方法,只能调用静态的方法,或实例的方法

终于有点懂了,所以如果上面代码不用静态方法的话,那么必须

public static void main(){
new A().functionA(); //这样不会报错
}

下面是更改后的代码,可以运行


import javax.sound.midi.*;
public class MiniMusicPlayer1 {
  public static void main(String[] args) {
    try {
      Sequencer sequencer=MidiSystem.getSequencer();
      sequencer.open();


      Sequence seq=new Sequence(Sequence.PPQ,4);


      Track t=seq.createTrack();


      for(int i=5; i<61; i+=4) {
      System.out.println(i);
        t.add(new MiniMusicPlayer1().makeEvent(144,1,i,100,i));
        t.add(new MiniMusicPlayer1().makeEvent(128,1,i,100,i+2));
      }


      sequencer.setSequence(seq);
      sequencer.setTempoInBPM(220);
      sequencer.start();
    } catch(Exception ex) {
      ex.printStackTrace();
    }
  }


  public  MidiEvent makeEvent(int comd,int chan,int one,int two,int tick) {
    MidiEvent event=null;
    try {
      ShortMessage a=new ShortMessage();
      a.setMessage(comd,chan,one,two);
      event=new MidiEvent(a,tick);
    } catch(Exception x) {}
    return event;
  }
}


java学习笔记5_HelloWorld 和 public static void main(String[] args)

1.   这是第一个hello程序和说明 // 默认引入package java.lang // 文件名和类名必须相同,在一个文件里最多有一个public类 public class Hello...

给java初学者关于jdk jre eclipse tomcat jetty 的疑惑的说明

问题:Java初学者首先下载 JDK 开发环境,然后再下 eclipse 对吗?那 tomcat是什么?还需要安装吗? =====================分割线=============...

Java数组操作的疑惑(这篇错误,后来才知道是有static修饰的结果)

Java数组操作的疑惑刚接触java,看来看和C语言很相似,先看下基础知识,今天改完论文,接着昨天的看,看到数组介绍,对数组进行排序操作,出现了让我困惑的问题,大概是因为只知道C语言的原因吧。说下操作...

Scala初学者学习资料:main(String[])

你可能已经使用JAVA若干年了,或许JAVA是你接触编程来的第一门编程语言,或许是作为比C++更好的一个选择。不管怎么样,你已经适应了JAVA,并了解她的外观与内在,能够体会它的喜怒与哀乐(原文:Yo...

Java基础之面向对象(二)--static、静态代码块、Main函数、单例模式

/* 静态:static。 用法:是一个修饰符,用于修饰成员(成员变量,成员函数). 当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外, 还可以直接被类名调用。类名.静态成员。 sta...

《Java程序员面试笔试宝典》之为什么需要public static void main(String[] args)这个方法

public staticvoid main(String[] args)为Java程序的入口方法,JVM在运行程序的时候,会首先查找main方法...
  • xdhehao
  • xdhehao
  • 2014年05月04日 22:15
  • 3882

java中main方法的初始化与static关…

(转载)   Java的类是用到才开始加载的,并且在每个类的构造器调用之前,类的每个域(成员变量)都要首先被编译器初始化一次,然后才轮到构造器来干活儿。但是,Java的初始化是惰性的,它没有C++构造...

黑马程序员--03.Java面向对象--02.【static关键字】【main方法】【静态成员】

Java面向对象--02 static关键字 main方法静态成员 ----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 1.  ...

黑马程序员_JAVA之路6——面向对象2(static、main函数、对象)

------- android培训、java培训、期待与您交流! ---------- 1  static关键字,是一个修饰符,用于修饰成员变量和成员函数。当成员被静态修饰后,就多了...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:初学者 java学习 关于static main的疑惑
举报原因:
原因补充:

(最多只允许输入30个字)