When you have an object that you only want 1 instance of, you use static.
A very good example of this is a database connection pool. You may want many connections but since creating connections is very expensive operation, so you want to reuse them. That is where the database pool comes in (a pool of database connections).
Scenario:
your database is configured for 110 connection and your database pool is configure for 100 connections. If you have 2 instances of the database pool, you can imagine the problems that can occur when one of those pools ask the database for its 111th connection
There is a very popular design
pattern based on the static keyword it is called a singleton. Here is one article.
http://www.javaworld.com/javaworld/jw-04-2003/jw-0425-designpatterns.html
Sean