Fazer o comando de porcentagem no java

tenho uma tabela no banco de dados e gostaria de calcular a porcentagem de n° de pessoas com um número de n° de habitantes mais n sei como faço pro Java mostrar a nova tabela com que foi gerada na porcentagem

Não entendi quase nada, mas em resumo, não tem comando de porcentagem.
Vc pode aplicar uma simples regra de 3 e chegar ao resultado.

Eu fiz um select Count pra contar qnts nomes tem é depois peguei esse valor e calculei a porcentagem só q qnd vc faz o cálculo o mysql gera um nova tabela com o resultado mais eu queria é essa tabela aparecesse no JoptionPane

bom, toda consulta é uma nova tabela virtual, mas fica dificil te orientar sem ver oq vc ta fazendo.
É extremamente simples, vc faz a consulta, lê os dados resultantes e faz oq quiser com eles, n tm como saber onde vc ta errando.

fiz isso no mySQL Workbench

SELECT count(nome) / 1164 AS ‘Percentual’ FROM pessoa where cidade = ‘São Paulo’

e ele me deu uma tabela

Percentual
0.0043

só queria precisava pegar esse where cidade e dar a opção do usuario escolher qual cidade ele quer calcular o percentual ,

EX:

São Paulo : 1164"
Guarulhos : 1301
Campinas : 1143
São Bernardo do Campo : 796
Santo André : 687

ai qnd escolhesse fazia o codigo

escolhido santo andré

SELECT count(nome) / 687 AS ‘Percentual’ FROM pessoa where cidade = ‘Santo André’

escolhido Campinas

SELECT count(nome) / 1143 AS ‘Percentual’ FROM pessoa where cidade = ‘Campinas’

mais isso tudo no java e o resultado mostrar no JOptionPane no java

ta, mas oq vc já tem de código java?
tá usando jpa/hibernate, jdbc ou oq?

public class PessoaDao {

private final Connection con;

public PessoaDao(){
    
    this.con = ConnectionFactory.getConnection();
    
}

public boolean add(Pessoa p){
    String sql = " INSERT INTO pessoa(nome,cpf,nascimento,sexo,peso,altura,cidade,sintomas,email,senha)VALUES (?,?,?,?,?,?,?,?,?,?);";
            
    try {
        try (PreparedStatement stmt = con.prepareStatement(sql)) {
           stmt.setString(1, p.getNome()); 
           stmt.setDouble(2, p.getCpf());
            
            
            if(p.getNascimento() != null ){
                java.sql.Date Nascimento = new java.sql.Date(p.getNascimento().getTime());
                stmt.setDate(3, p.getNascimento());
                
            }else{
                
                JOptionPane.showMessageDialog(null,"Favor Preencher a Data de Nascimento !");
            }
            stmt.setString(4, p.getSexo());
            stmt.setFloat(5, (float) p.getPeso());
            stmt.setFloat(6, (float) p.getAltura());
            stmt.setString(7, p.getCidade());
            stmt.setString(8, p.getSintomas());
            stmt.setString(9, p.getEmail());
            stmt.setString(10, p.getSenha());
            
            stmt.execute();
        }
        con.close();
        return true;
        
    } catch (SQLException ex) {
         JOptionPane.showMessageDialog(null,"ERRO , LISTA NÃO FOI RETORNADA " + "ATENÇÃO"+JOptionPane.ERROR_MESSAGE); 
        return false;     
    }
}
    
    public boolean update(Pessoa p){
    String sql = " UPDATE pessoa SET nome = ?,cpf = ?,nascimento = ?,sexo = ?,peso = ?,altura = ?,cidade = ?,sintomas = ?, email = ?, senha = ?  WHERE pessoa.cpf = ?;" ;
            
    try {
        try (PreparedStatement stmt = con.prepareStatement(sql)) {
            stmt.setString(1, p.getNome()); 
            stmt.setLong(2, (long) p.getCpf());
            
            if(p.getNascimento() != null ){
                java.sql.Date Nascimento = new java.sql.Date(p.getNascimento().getTime());
                stmt.setDate(3, p.getNascimento());
                
            }else{
                
                JOptionPane.showMessageDialog(null,"Favor Preencher a Data de Nascimento !");
            }
            stmt.setString(4, p.getSexo());
            stmt.setFloat(5, (float) p.getPeso());
            stmt.setFloat(6, (float) p.getAltura());
            stmt.setString(7, p.getCidade());
            stmt.setString(8, p.getSintomas());
            stmt.setString(9, p.getEmail());
            stmt.setString(10, p.getSenha());
            
            
            stmt.execute();
        }
        con.close();
        return true;
        
    } catch (SQLException ex) {
         JOptionPane.showMessageDialog(null,"ERRO , ATUALIZAÇÃO NÃO FOI FEITA " + "ATENÇÃO"+JOptionPane.ERROR_MESSAGE);   
        return false;     
    }
}

    public boolean delete(Pessoa p){
    String sql = " DELETE FROM pessoa WHERE cpf = ?;" ;
            
    try {
        try (PreparedStatement stmt = con.prepareStatement(sql)) {
            stmt.setLong(1, (long) p.getCpf());
            
            stmt.execute();
        }
        con.close();
        return true;
        
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null,"ERRO , O DADO NÃO FOI DELETADO " + "ATENÇÃO"+JOptionPane.ERROR_MESSAGE);   
        return false;     
    }
}
    
public List<Pessoa> getList () {
    
    List<Pessoa> pessoas = new ArrayList<>();
    String sql = "SELECT * FROM pessoa";
        try {
            ResultSet rs ;
        try (PreparedStatement stmt = con.prepareStatement(sql)) {
            rs = stmt.executeQuery();
            while(rs.next())
            {
                Pessoa p = new Pessoa ();
                p.setNome(rs.getString("nome"));// essa string por parametros é o nome da coluna la do banco
                p.setCpf(rs.getLong("cpf"));
                p.setSexo(rs.getString("sexo"));
                p.setPeso(rs.getFloat("peso"));
                p.setAltura(rs.getFloat("altura"));
                p.setCidade(rs.getString("cidade"));
                p.setSintomas(rs.getString("sintomas"));
                p.setEmail(rs.getString("email"));
                p.setSenha(rs.getString("senha"));
                pessoas.add(p);
            }
        }          
            rs.close();
            con.close();
        } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null,"ERRO , LISTA NÃO FOI RETORNADA " + "ATENÇÃO"+JOptionPane.ERROR_MESSAGE);
        return null;
    }
        
    return pessoas;
}   

public boolean RelatorioA(Pessoa p){
    
    String sql = " Select count(*) FROM pessoa WHERE cidade = ? " ;
     
              
    try {
       
        try (PreparedStatement stmt = con.prepareStatement(sql)) {
            
            stmt.setString(1, p.getCidade());
            stmt.executeQuery();
        }
       con.close();
       return true;
        
        
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null,"ERRO , O DADO NÃO FOI RETORNADO " + "ATENÇÃO"+JOptionPane.ERROR_MESSAGE);   
     return false;
    }
  
}

}

esta e a conexao onde chamo o comando mysql mas n sei como mostra isso numa classe principal

Isto n é uma conexão, nem tanto comandos mysql. É uma classe DAO que faz operações no banco com comandos SQL, onde também existem vários métodos com objetivos distintos.
Cadê seu select de percentual q vc postou acima, vc deve ter um método que executa aquela consulta e lê os dados. Vc tem exemplos suficientes ai pra desenvolver isso.
N foi vc q fez esta classe, né?

Não entendi bem qual sua dúvida, quanto à mostrar o valor é só chamar o método do DAO como o que você postou acima, e assumindo que somente um valor é retornado (sem agrupamento na Query) você pode retornar este valor como está dizendo, sem um Bean encapsulado. Por exemplo:

public double getPorcentagem(String cidade) throws SQLException { double porcentagem = 0;
	Connection conn = ConnectionFactory.getConnection();
	
	PreparedStatement pst = null;
	
	ResultSet rs = null;
	
	try {
		String sql = "SELECT count(nome) / qtd_habitante AS 'Percentual' FROM pessoa where cidade = ?";
		
		pst = conn.prepareStatement(sql);
		
		pst.setString(1, cidade);
		
		rs = pst.executeQuery();
		
		if (rs.next()) {
			porcentagem = rs.getDouble("Percentual");
		}	
		
	} finally {
		pst.close();
		rs.close();
		conn.close();
	}
	return porcentagem;
}

E pra mostrar no JOptionPane é só literalmente você pegar o valor e mostrar nele:

try {
double porcentagem = new DAOExemplo().getPorcentagem();

            NumberFormat nfPorcentagem = NumberFormat.getPercentInstance();
	nfPorcentagem.setMaximumFractionDigits(2);

	JOptionPane.showMessageDialog(null,nfPorcentagem.format(porcentagem));		
} catch (SQLException e) {
	e.printStackTrace();
}

E quanto à selecionar qual a cidade, não sei qual a estrutura de sua tabela, ela deveria ter um atributo com a quantidade de habitantes de cada cidade (como está aí em cima) ou uma tabela à parte que faça esse relacionamento.