title: Understand BufferStrategy
body: <p>I'm kind of new to java. I want to make a game. After a lot of research, I can't understand how bufferstrategy works..
  I know the basics.. it creates an off-screen image that you can later put into your windows object.. I got this</p>
  
  <pre><code>public class Marco extends JFrame {
      private static final long serialVersionUID = 1L;
      BufferStrategy bs; //create an strategy for multi-buffering.
  
      public Marco() {
         basicFunctions(); //just the clasics setSize,setVisible,etc
         createBufferStrategy(2);//jframe extends windows so i can call this method 
         bs = this.getBufferStrategy();//returns the buffer strategy used by this component
      }
  
     @Override
     public void paint(Graphics g){
        g.drawString("My game",20,40);//some string that I don't know why it does not show
        //guess is 'couse g2 overwrittes all the frame..
        Graphics2D g2=null;//create a child object of Graphics
        try{
           g2 = (Graphics2D) bs.getDrawGraphics();//this new object g2,will get the
           //buffer of this jframe?
           drawWhatEver(g2);//whatever I draw in this method will show in jframe,
           //but why??
        }finally{
           g2.dispose();//clean memory,but how? it cleans the buffer after
           //being copied to the jframe?? when did I copy to the jframe??
        }
        bs.show();//I never put anything on bs, so, why do I need to show its content??
        //I think it's a reference to g2, but when did I do this reference??
     }
  
     private void drawWhatEver(Graphics2D g2){
         g2.fillRect(20, 50, 20, 20);//now.. this I can show..
     }
    }
  </code></pre>
  
  <p>I don't know.. I've been studying this for a long time now.. and with no luck at all.. I don't know.. maybe it's all there, and it's really clear and simple, and I'm just too stupid to see it..</p>
  
  <p>Thanks for all the help..  :)</p>