Quando usar somente vários ifs e quando usar if e else if?
Quando usar somente vários ifs e quando usar if e else if?
O ideal é nunca usar muitos ifs, else ifs, pois geral Complexidade Ciclomática, o " else if " nada mais é que um if dentro de um else. O ideal é sempre que possível utilizar conectivos como :
" || " = Que significa " ou " " && " = Que significa " e "
Que iram encurtar o seu código e deixar ele mais " Bonito "
public class Maioridade {
    public static void main(String[] args) {
        int idade = 21 ;
        int quantidadePessoas = 2 ;
        if (idade >= 18 ) {
            System.out.println(" Voce pode entrar ");
        }else {
            if ( quantidadePessoas >= 2) {
                System.out.println(" Voce pode entrar , acompanhado");
            }else {
                System.out.println(" Voce nao pode entrar");
            }
        }
    }
}Esse código usa um " else if " que poderia facilmente ser excluído com a implementação do conectivo " || " no if.
public class MaioridadeV2 {
    public static void main(String[] args) {
        int idade = 21 ;
        int quantidadePessoas = 2 ;
        if ( idade >= 18 || quantidadePessoas >= 2 ) {
            System.out.println(" Voce pode entrar");
        }else {
            System.out.println(" Voce nao pode entrar ");
        }
    }
}Então o if poderá verificar o seguinte : Se ele for maior de 18 OU a quantidade de pessoas for maior que duas, ele pode entrar.
Espero ter ajudado !!
De fato o uso de operadores lógicos vai ajudar bastante, principalmente com relação à leitura do código. Para testes condicionais mais simples, vale a pena conhecer também o comando "switch case":
...
if(mes == 1 ){
    System.out.println("Janeiro");
}else if( mes == 2){
    System.out.println("Fevereiro");
...código  omitido...
}else if(mes == 12){
    System.out.println("Dezembro");
}else{
    System.out.println("Mês inválido");
}
...O código acima poderia ser substituído por:
...
switch(mes){
    case 1: 
          System.out.println("Janeiro");
          break;
    case 2: 
          System.out.println("Fevereiro");
          break;
...código  omitido...
    case 12: 
          System.out.println("Dezembro");
          break;
    default: 
          System.out.println("Mês inválido");
          break;
}Segue o link da documentação da Oracle para referência: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
Bons estudos e boa sorte ;) !