初学者 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数组操作的疑惑(这篇错误,后来才知道是有static修饰的结果)

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

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

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

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

public staticvoid main(String[] args)为Java程序的入口方法,JVM在运行程序的时候,会首先查找main方法

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

------- android培训、java培训、期待与您交流! ---------- 1  static关键字,是一个修饰符,用于修饰成员变量和成员函数。当成员被静态修饰后,就多了...

黑马程序员:Java之main函数、static关键字介绍

main函数 主函数是一个特殊的函数,作为程序的入口,可以被jvm调用 主函数的定义 public static void main(String[] args) public:代表着该函数...

Java笔记2 面向对象<2>static关键字、main函数、静态运用、单例设计模式

06天-01-面向对象(static关键字) l  static 关键字 用于修饰成员(成员变量和函数)。 l  被修饰后的成员变量具备如下特点: 1)       随着类的加载而加载。也就是...

Java--static关键字,main方法说明

static关键字的特点     * a:随着类的加载而加载  * b:优先于对象存在  * c:被类的所有对象共享   * 举例:咱们班级的学生应该共用同一个班级编号。   * 其实这个特点也是在告...

在java中为什么要把main方法定义为一个static方法?

在java中为什么要把main方法定义为一个static方法?在讲这个之前,我先讲一些关于java关键字static的吧。 (1)在类中,变量的前面有修饰符static称为静态变量(类变量),方...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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