Tabela de precedencias de operadores

8 respostas
F

Galera a tabela de precedencia de operadores é a seguinte mesmo?

  1. ,cast,!
  2. ++ –
    3)*/%
    4)+ -
  3. ,<<
    6)instanceof <=,>=
    7)= =!
    8)&
    9)^
    10)|
    11)&&
    11)??:
    e quem sabe esse resultado?

public static void main(String...a){
                int i=0;
                  for( ;true;i++){
                    if( (i/i++) > 0){
                      break;
                    }
                    try{
                        
                    }catch(ArithmeticException e){
                        out.println("mate");
                    }catch(Exception e){
                         out.println("Exc");
                    }finally{
                           out.println("finly");
                    } 

}

qual resultado?

8 Respostas

davidbuzatto

Levando em conta que estão faltando algumas chaves, e vc não usa a classe System para obter out, eu diria que o código não compila.

Se esses erros estiverem consertados, nenhuma excessão será capturada pois o try não engloba o código a ser testado, nem o finally será executado, pois a ArithmeticException vai ser lançada antes mesmo de se entrar no try.

Se o try englobasse o código, seria então capturada a AithmeticException, resultando em:

mate finly

Até mais!

davidbuzatto

Quanto a precedência, cuidado pois o ++ e o – usam uma regra para serem acionados em uma expressão…
Se forem pré-fixados, eles serão executados antes da expressão, se forem pós-fixados (como no seu exemplo), eles serão executados após a execução da expressão.

F

desculpas tem razao se preguica matasse…nossa ja era

import static java.lang.System.*;
public class Try {
    
    /** Creates a new instance of Try */
    public Try() {
    }
            public static void main(String...a){
                int i=0;
                  for( ;true;i++){
                    if( (i/i++) > 0){//primeiro faz a divisao
                      break;
                    }
                          try{
                        
                          }catch(ArithmeticException e){
                           out.println("mate");
                       }catch(Exception e){
                         out.println("Exc");
                          }finally{
                           out.println("finly");
                            }
                    
                    
                    
                  }
                
                
                
            }
    
}
paulovittor23

Compila sim…ele deu um “import static” :wink:

Um exemplo…

import static java.lang.System.out;

public class ImportStatic {

	public static void main(String[] args) {
		out.println( "import static =D" );
	}
	
}
F

Pois é paulovittor23 ,mas no primeiro codigo nao tinha dado o import por preguica por isso depois acrescentei :cry:

paulovittor23

Eu imaginei que você tinha omitido… mas realmente não fica muito legível, eu vejo mais a utilização do import static com enums, mas mesmo assim eu não gosto muito de usar.

F

davidbuzatto:
Quanto a precedência, cuidado pois o ++ e o – usam uma regra para serem acionados em uma expressão…
Se forem pré-fixados, eles serão executados antes da expressão, se forem pós-fixados (como no seu exemplo), eles serão executados após a execução da expressão.

Cara mas justamente essa era minha duvida, como vc mesmo disse é pos fixado então deveria entrar em um loop infinito pq somaria i++ que é igual a um e divideria por zero que o resultado é zero nao é??
mas isso nao acontece ,primeiro faz a divisão:

for( ;true;i++){
                    if( (i/i++) > 0){//primeiro faz a divisao depois soma
                      break;
                    }
                  .
                  .
                  .
              // mais codigo
             lanca excecao
       }
LPJava

para mim lança uma excecação dividir por 0 e se ele lança uma excecao, apos o for nada mais abaixo é executado… o i++ do for so é executado apos a instrução do for acontecer… entao eu marcaria lá lança uma exceção.

Criado 10 de fevereiro de 2008
Ultima resposta 11 de fev. de 2008
Respostas 8
Participantes 4