quinta-feira, 19 de março de 2015

0.0.0.17.3.1 - Código OlaVar

01 public class OlaVar {
02     static int vagas;
03     public static void main (String[] args){
04         int numAlunos;
05         int maxAlunos=60;
06         numAlunos=41;
07         System.out.println ("Ola");
08         System.out.println ("numAlunos maior que maxAlunos=" (numAlunos>maxAlunos));
09         if (numAlunos>maxAlunos) {
10             System.out.println ("turma lotada.");
11         else {
12             System.out.println ("turma não lotada");
13             vagas=maxAlunos-numAlunos;
14             System.out.println ("numero de vagas=" + vagas);
15             if (vagas>0System.out.println ("há cadeiras vazias.");
16         }
17     }
18 }
Java2html

2 comentários:

  1. Olá professor, eu nao entendi o proposito da linha 2 como também eu gostaria de saber para qual situação eu devo usar o comando static,

    ResponderExcluir
    Respostas
    1. Olá!
      static é aplicado em atributos e métodos, para que sejam únicos para a classe e suas instâncias e possam ser usados sem necessidade de instanciação. Nesta situação usa-se static... mas neste momento da disciplina esta explicação talvez não faça muito sentido pois ainda não defini classes e instâncias nem usei mais de uma classe...

      Vamos usar o cenário das aulas: apenas uma classe, sem instanciação. Apenas por informação, instanciação é feita com o comando new.

      Quando há uma única classe, certamente o método main é definido nela.

      O método main é o ponto de entrada de execução do programa, logo, precisa existir assim que o programa seja carregado pela máquina virtual java e antes de qualquer instanciação. Por isso main precisa ser static.

      O bloco de código de um método estático estabelece um contexto (escopo) estático. Nesse contexto podemos criar variáveis locais, instanciar objetos (usar new) e usá-los (aplicar comandos sobre estes) mas não podemos usar atributos NÃO estáticos da classe*. Então, se usarmos atributos da classe dentro de main, eles precisam ser estáticos.
      Vagas é atributo da classe e desejamos usá-lo em main, portanto precisa ser estático.

      Por isso, neste programa, há static na linha 2.

      espero ter ajudado.

      * existe uma "sutilieza" aqui, que somente é percebida quando considera-se instanciação: Podemos, dentro de main, criar uma instância (com new) e usar os atributos não estáticos dessa instância. Isto é diferente de usar os atributos da classe... mas superficialmente parece o mesmo...

      Excluir