Conexão com o banco de dados ( JDBC - Postegresql )

Hello guys, estou aprendendo um pouco sobre conexão com banco de dados e tentando fazer conexão com banco de dados e apenas roda o método main, eu tenho uma String em outra classe pra informar caso a conexão funcione, mas não aparece no console, segue em anexo o código atual:

import Ultilitarios.Conexao;

public class Programa {

Conexao conectar = new Conexao();

public Programa() {
	conectar.conexao();
} 

//Isso aqui está fora do main, quando eu coloco ele pede pra converter em static

E aí turma, o que eu faço?

Você só pode usar algo dentro de um método estático se:

  • Foi passado como parâmetro
  • Foi declarado dentro do método
  • É estático
  • Foi criada uma instância do objeto onde este elemento (atributo/método) existe

Qualquer situação diferente disso, não irá funcionar.

“Mas por que isso?”.
Simples, você possui métodos (e atributos) da classe e do objeto. Tudo o que contém a palavra reservada static pertence à classe (obviamente, estará acessível para seus objetos).
Além disso, tudo o que é estático é carregado no momento em que a classe é colocada (imagina que seja isso) no ClassLoader.

Mas quando eu coloquei dentro do Main, não funcionou apareceu um aviso de erro, aí tinha que fazer outras coisas lá que eu não entendi direito

Pode usar assim:

import Ultilitarios.Conexao;

public class Programa {

    private static Conexao conexao = new Conexao();

    public static void main(String[]) args) {
        conexao.conectar();
    } 

}

Ou o seu método conectar ser estático (static):

public static void conectar() {
       /* executa o método */
}

Acho que você embaralhou ali no primeiro código, ali em “private static Conexao”, não seria “conectar” e dentro do Main não seria “conectar.conexao();”?

Criei uma variável estática do tipo Conexao, instanciei e chamei o método conectar.

Ou apenas faria o import e chamaria o método caso já fosse estático.