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

笔者刚开始了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;
  }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值