Bom, o #define é uma diretiva de processamento, ele nunca vai ser compilado, ele só vai ser executado.
É como o comando #include <lib> , que é apenas um link para a biblioteca. A diferença é que o #define é um "link" para um valor qualquer.
O const é uma constante, um valor que nunca vai ser mudado.
A diferença básica entre os dois é que com o #define você economiza memória e gasta mais processamento, com o const você gasta mais memória e economiza processamento.
O static é um valor estático, ele é normalmente usado com Objetos.
Sempre que tu criar uma classe e criar algum objeto static, o valor do objeto não ir mudar independente de quantos objetos da classe tu crie.
Olha esse exemplo do site
GUj, o link já cai direto no tutorial sobre static do site.
1 // TesteStatic.java
02 class Classe1
03 {
04 // Variavel static
05 public static int contador = 0;
06
07 // Variavel nao-static
08 public int outroContador = 0;
09
10 public Classe1() {}
11
12 // Precisa ser static porque "contador" é static
13 public static void incrementaContador()
14 {
15 contador++;
16
17 System.out.println("contador agora é "+ contador);
18 }
19
20 public void incrementaOutroContador()
21 {
22 outroContador++;
23
24 System.out.println("outroContador agora é "+ outroContador);
25 }
26 }
27
28 public class TesteStatic
29 {
30 public static void main(String args[])
31 {
32 Classe1 c1 = new Classe1();
33 c1.incrementaContador();
34 c1.incrementaOutroContador();
35
36 Classe1 c2 = new Classe1();
37 c2.incrementaContador();
38 c2.incrementaOutroContador();
39
40 Classe1 c3 = new Classe1();
41 c3.incrementaContador();
42 c3.incrementaOutroContador();
43
44 Classe1 c4 = new Classe1();
45 c4.incrementaContador();
46 c4.incrementaOutroContador();
47 }
48 }
a saida gerada do código fica assim.
contador agora é 1
outroContador agora é 1
contador agora é 2
outroContador agora é 1
contador agora é 3
outroContador agora é 1
contador agora é 4
outroContador agora é 1
Espero ter ajudado
![Sorriso forçado ;D](https://ubuntuforum-br.org/Smileys/default/grin.gif)
Se ainda tiver alguma duvida é só falar.
PS: desculpa não ter respondido antes, é que eu só vi agora esse tópico.