Como seu método é estático, isso economiza memória, você não vai ter várias copias dele para cada instância, mas apenas uma cópia por Classe.
Não.
Isso só é verdade para os campos não estáticos da classe (cada instância terá uma cópia deles). Mas para métodos isso não se aplica.
Só existe uma cópia de cada método na JVM, independente de ser estático ou não. O "truque" aqui é que quando um método de instância é chamado, a própria instância é passada automaticamente como o primeiro parâmetro, e este é referenciado como this
. Este mecanismo ocorre internamente e é transparente para o programador.
Em algumas linguagens esse mecanismo é explícito. Um exemplo é Python, no qual o primeiro parâmetro de todo método sempre é a instância da classe (que por convenção é chamado de self
).
Leitura complementar:
- How are an object's instance methods used and stored?
- What exactly happens in the JVM when invoking an object's instance method?
- Do methods in class instances take a place in memory?
- Este link também pode ajudar (é mais amplo, mas fala sobre o mecanismo que "injeta" o
this
).