SlideShare uma empresa Scribd logo
Programação Orientada a Objetos



       Variáveis de Instância
        e Variáveis Locais
      Ciclo de vida das variáveis em Java


           Ludimila Monjardim Casagrande
                       2012
Variáveis

      Basicamente, o que um programa faz é manipular
          dados. Em geral, esses dados são armazenados
          em variáveis localizadas na memória RAM do
          computador.
      Uma variável pode guardar dados de vários tipos:
          números, textos, booleanos (verdadeiro ou falso) ou
          referências para objetos, por exemplo.
      Além disso, toda variável possui um nome que é
          utilizado quando a informação dentro da variável
          precisa ser manipulada pelo programa.

Variáveis em Java        ©2012 Ludimila Monjardim Casagrande    2
Declaração de Variáveis

      Na linguagem de programação Java, as variáveis
          devem ser declaradas para que possam ser
          utilizadas.
      A declaração de uma variável envolve definir um
          nome único (identificador) dentro de um escopo e
          um tipo de valor.
      As variáveis são acessadas pelos nomes e
          armazenam valores compatíveis com o seu tipo.
      Exemplo de declaração com inicialização:
             int numero = 10;
Variáveis em Java           ©2012 Ludimila Monjardim Casagrande   3
Declaração de Variáveis

      A declaração de uma variável pode ser
          realizada em qualquer linha de um bloco.
      Não é necessário declarar todas as variáveis no
          começo do bloco como acontece em algumas
          linguagens de programação.
      Não podemos declarar duas variáveis com o
          mesmo nome em um único bloco ou escopo
          pois ocorrerá um erro de compilação.


Variáveis em Java       ©2012 Ludimila Monjardim Casagrande   4
Variáveis em Java

      O Java suporta variáveis com diferentes ciclos
          de vida:

             Os atributos (ou variáveis de instância);

             As variáveis de método (ou variáveis locais).




Variáveis em Java          ©2012 Ludimila Monjardim Casagrande   5
Variáveis de Instância

      Os atributos (ou variáveis de instância) são
          criados quando uma instância da classe (objeto)
          é criada e são destruídos quando essa instância
          é destruída.

      Subordinada às regras de acessibilidade e à
          existência de uma referência a um objeto, uma
          variável de instância é acessível enquanto o
          objeto que a encapsula for acessível.


Variáveis em Java       ©2012 Ludimila Monjardim Casagrande   6
Variáveis de Método

      Variáveis locais podem ser argumentos ou
          variáveis declaradas no corpo do método.
      Os argumentos são criados na entrada do
          método ao qual pertencem.
      As demais variáveis locais são criadas no
          momento de sua declaração.
      Ambos só existem (portanto só podem ser
          acessados) no intervalo entre a sua criação e o
          término da execução do método.

Variáveis em Java       ©2012 Ludimila Monjardim Casagrande   7
Exemplo
   public class Conta {
        private double saldo;
        public Conta ( ) {
        }
        public Conta (double s) {                              s é uma variável local e
           this.saldo = s;
                                                               saldo é uma variável de
        }
                                                               instância
        public void creditar (double valor) {
           saldo = saldo + valor;
        }
        public void debitar (double valor) {
           saldo = saldo - valor;
        }                                                Os construtores normalmente
        public double obterSaldo ( ) {                   inicializam os atributos da
           return saldo;                                 classe.
        }
   }
Variáveis em Java               ©2012 Ludimila Monjardim Casagrande                       8
Variáveis e Inicialização

      Como vimos, os atributos são automaticamente
          inicializados com um valor default de acordo
          com o seu tipo, caso não tenham sido
          explicitamente inicializados na sua declaração.

      Variáveis de método não são automaticamente
          inicializadas e, portanto, seus valores iniciais
          devem ser obrigatoriamente definidos de forma
          explícita antes de serem utilizadas.


Variáveis em Java        ©2012 Ludimila Monjardim Casagrande   9
Exemplo de Variáveis de Método

      Método 1:
          public int errado( ) {
               int i;
               return i+5;                    Erro de compilação na linha 3
          }

      Método 2:
          public int certo( ) {
               int i = 0;                     Variáveis locais devem ser inicializadas
               return i+5;                    antes de serem utilizadas
          }

Variáveis em Java                 ©2012 Ludimila Monjardim Casagrande                    10
Exemplo de Variáveis de Método

   public class Principal {
        public static void main (String[ ] args) {
            Conta c = new Conta( );
            int i = 0;                                   Se as variáveis c e i não
            while (i < 10) {                             forem explicitamente
                c.creditar(i);                           inicializadas ocorre erro de
                                                         compilação.
                i++;
            }
            System.out.println(c.obterSaldo());
        }                                                   Obs.: Debugar para observar o
   }                                                        comportamento.

Variáveis em Java                ©2012 Ludimila Monjardim Casagrande                        11
Alocação de Memória em Java

      Revisando o exemplo:
             Data hoje = new Data(21, 10, 2006);

               hoje   ?                         hoje        0x0123

               dia    0                         dia              21
               mes    0                         mes              10
               ano    0                         ano             2006




Variáveis em Java         ©2012 Ludimila Monjardim Casagrande          12
Alocação de Memória em Java

      Quando um objeto é criado, pela chamada de new
          <construtor>, os seguintes passos acontecem:
            1. Um espaço de memória é alocado para o objeto
               criado e suas variáveis de instância são
               inicializadas com seus valores default
            2. As inicializações explícitas programadas para as
               variáveis de instância são realizadas
            3. O construtor chamado é executado
            4. O endereço de memória no qual o objeto está
               alocado é retornado e atribuído para a variável que
               referencia o objeto

Variáveis em Java           ©2012 Ludimila Monjardim Casagrande      13
Exemplo
                                                              Após Data b = a;
   public class Teste {
                                                             x         8
        public static void main(String[] args) {             y         7
                                                             a      0x0123
             int x = 7;                                                          21 10 2006
                                                             b      0x0123
             int y = x;
             x = 8;
             Data a = new Data(21, 10, 2006);
             Data b = a;                                      Após a = new Data(28, 10,2006);
                                                             x         8
             a = new Data(28, 10, 2006);                               7
                                                             y
        }                                                    a      0x0456       28 10 2006
   }                                                         b      0x0123
                                                                                 21 10 2006
   Quais são os resultados finais?



Variáveis em Java             ©2012 Ludimila Monjardim Casagrande                         14

Mais conteúdo relacionado

Mais procurados

Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
Daniel Arndt Alves
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
Ludimila Monjardim Casagrande
 
Funções em C
Funções em CFunções em C
Funções em C
Elaine Cecília Gatto
 
POO - 07 - Operadores do Java
POO - 07 - Operadores do  JavaPOO - 07 - Operadores do  Java
POO - 07 - Operadores do Java
Ludimila Monjardim Casagrande
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
Marcio Marinho
 
POO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de MétodosPOO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de Métodos
Ludimila Monjardim Casagrande
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
Igor Takenami
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
Ludimila Monjardim Casagrande
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Adriano Teixeira de Souza
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
Luciano Ramalho
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
Regis Magalhães
 
Poo encapsulamento
Poo encapsulamentoPoo encapsulamento
Poo encapsulamento
Sedu
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
Elaine Cecília Gatto
 
Padrão Adapter
Padrão AdapterPadrão Adapter
Padrão Adapter
Eduardo Mendes
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
Daniel Brandão
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
Jéssica Nathany Carvalho Freitas
 
POO - 20 - Wrapper Classes
POO - 20 - Wrapper ClassesPOO - 20 - Wrapper Classes
POO - 20 - Wrapper Classes
Ludimila Monjardim Casagrande
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em Java
Denis L Presciliano
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
Bruno Catão
 
Estrutura de Dados - Registros
Estrutura de Dados - RegistrosEstrutura de Dados - Registros
Estrutura de Dados - Registros
Adriano Teixeira de Souza
 

Mais procurados (20)

Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
Funções em C
Funções em CFunções em C
Funções em C
 
POO - 07 - Operadores do Java
POO - 07 - Operadores do  JavaPOO - 07 - Operadores do  Java
POO - 07 - Operadores do Java
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
POO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de MétodosPOO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de Métodos
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
 
Poo encapsulamento
Poo encapsulamentoPoo encapsulamento
Poo encapsulamento
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Padrão Adapter
Padrão AdapterPadrão Adapter
Padrão Adapter
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
 
POO - 20 - Wrapper Classes
POO - 20 - Wrapper ClassesPOO - 20 - Wrapper Classes
POO - 20 - Wrapper Classes
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em Java
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Estrutura de Dados - Registros
Estrutura de Dados - RegistrosEstrutura de Dados - Registros
Estrutura de Dados - Registros
 

Semelhante a POO - 04 - Variávies em Java

POO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em JavaPOO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em Java
Ludimila Monjardim Casagrande
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
Maurício Linhares
 
POO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - DatasPOO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - Datas
Ludimila Monjardim Casagrande
 
Refactoring
RefactoringRefactoring
Refactoring
Bruno Lui
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
Natanael Fonseca
 
Aula4
Aula4Aula4
Aula4
fkimura
 
Aula5
Aula5Aula5
Aula5
fkimura
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
Natanael Fonseca
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
jmtofoli
 
Java básico
Java básicoJava básico
Java básico
Laryssa Muniz
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
John Godoi
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Adriano Teixeira de Souza
 
Encapsulamento em oo
Encapsulamento em ooEncapsulamento em oo
Encapsulamento em oo
Marconi Rodrigues
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
Engenharia de Software Ágil
 
POO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de DesenvolvimentoPOO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de Desenvolvimento
Ludimila Monjardim Casagrande
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
Frederico Maia Arantes
 
05 poo-ii
05   poo-ii05   poo-ii
05 poo-ii
Ialis Cavalcante
 
POO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de DadosPOO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de Dados
Ludimila Monjardim Casagrande
 
JPA - MGJUG
JPA - MGJUGJPA - MGJUG
JPA - MGJUG
Adriano Tavares
 
Solid
SolidSolid

Semelhante a POO - 04 - Variávies em Java (20)

POO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em JavaPOO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em Java
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
POO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - DatasPOO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - Datas
 
Refactoring
RefactoringRefactoring
Refactoring
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Aula4
Aula4Aula4
Aula4
 
Aula5
Aula5Aula5
Aula5
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
 
Java básico
Java básicoJava básico
Java básico
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Encapsulamento em oo
Encapsulamento em ooEncapsulamento em oo
Encapsulamento em oo
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
POO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de DesenvolvimentoPOO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de Desenvolvimento
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
05 poo-ii
05   poo-ii05   poo-ii
05 poo-ii
 
POO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de DadosPOO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de Dados
 
JPA - MGJUG
JPA - MGJUGJPA - MGJUG
JPA - MGJUG
 
Solid
SolidSolid
Solid
 

Mais de Ludimila Monjardim Casagrande

Gerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com ScrumGerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com Scrum
Ludimila Monjardim Casagrande
 
POO - 23 - Coleções da API do Java
POO -  23 - Coleções da API do Java POO -  23 - Coleções da API do Java
POO - 23 - Coleções da API do Java
Ludimila Monjardim Casagrande
 
POO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em JavaPOO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em Java
Ludimila Monjardim Casagrande
 
POO - 17 - Interfaces
POO - 17 - InterfacesPOO - 17 - Interfaces
POO - 17 - Interfaces
Ludimila Monjardim Casagrande
 
POO - 15 - Passagem de Argumentos
POO - 15 - Passagem de ArgumentosPOO - 15 - Passagem de Argumentos
POO - 15 - Passagem de Argumentos
Ludimila Monjardim Casagrande
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
Ludimila Monjardim Casagrande
 
POO - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
Ludimila Monjardim Casagrande
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
Ludimila Monjardim Casagrande
 
POO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em JavaPOO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em Java
Ludimila Monjardim Casagrande
 
POO - 08 - Prática de Encapsulamento
POO - 08 - Prática de EncapsulamentoPOO - 08 - Prática de Encapsulamento
POO - 08 - Prática de Encapsulamento
Ludimila Monjardim Casagrande
 

Mais de Ludimila Monjardim Casagrande (10)

Gerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com ScrumGerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com Scrum
 
POO - 23 - Coleções da API do Java
POO -  23 - Coleções da API do Java POO -  23 - Coleções da API do Java
POO - 23 - Coleções da API do Java
 
POO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em JavaPOO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em Java
 
POO - 17 - Interfaces
POO - 17 - InterfacesPOO - 17 - Interfaces
POO - 17 - Interfaces
 
POO - 15 - Passagem de Argumentos
POO - 15 - Passagem de ArgumentosPOO - 15 - Passagem de Argumentos
POO - 15 - Passagem de Argumentos
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
POO - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
POO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em JavaPOO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em Java
 
POO - 08 - Prática de Encapsulamento
POO - 08 - Prática de EncapsulamentoPOO - 08 - Prática de Encapsulamento
POO - 08 - Prática de Encapsulamento
 

POO - 04 - Variávies em Java

  • 1. Programação Orientada a Objetos Variáveis de Instância e Variáveis Locais Ciclo de vida das variáveis em Java Ludimila Monjardim Casagrande 2012
  • 2. Variáveis  Basicamente, o que um programa faz é manipular dados. Em geral, esses dados são armazenados em variáveis localizadas na memória RAM do computador.  Uma variável pode guardar dados de vários tipos: números, textos, booleanos (verdadeiro ou falso) ou referências para objetos, por exemplo.  Além disso, toda variável possui um nome que é utilizado quando a informação dentro da variável precisa ser manipulada pelo programa. Variáveis em Java ©2012 Ludimila Monjardim Casagrande 2
  • 3. Declaração de Variáveis  Na linguagem de programação Java, as variáveis devem ser declaradas para que possam ser utilizadas.  A declaração de uma variável envolve definir um nome único (identificador) dentro de um escopo e um tipo de valor.  As variáveis são acessadas pelos nomes e armazenam valores compatíveis com o seu tipo.  Exemplo de declaração com inicialização:  int numero = 10; Variáveis em Java ©2012 Ludimila Monjardim Casagrande 3
  • 4. Declaração de Variáveis  A declaração de uma variável pode ser realizada em qualquer linha de um bloco.  Não é necessário declarar todas as variáveis no começo do bloco como acontece em algumas linguagens de programação.  Não podemos declarar duas variáveis com o mesmo nome em um único bloco ou escopo pois ocorrerá um erro de compilação. Variáveis em Java ©2012 Ludimila Monjardim Casagrande 4
  • 5. Variáveis em Java  O Java suporta variáveis com diferentes ciclos de vida:  Os atributos (ou variáveis de instância);  As variáveis de método (ou variáveis locais). Variáveis em Java ©2012 Ludimila Monjardim Casagrande 5
  • 6. Variáveis de Instância  Os atributos (ou variáveis de instância) são criados quando uma instância da classe (objeto) é criada e são destruídos quando essa instância é destruída.  Subordinada às regras de acessibilidade e à existência de uma referência a um objeto, uma variável de instância é acessível enquanto o objeto que a encapsula for acessível. Variáveis em Java ©2012 Ludimila Monjardim Casagrande 6
  • 7. Variáveis de Método  Variáveis locais podem ser argumentos ou variáveis declaradas no corpo do método.  Os argumentos são criados na entrada do método ao qual pertencem.  As demais variáveis locais são criadas no momento de sua declaração.  Ambos só existem (portanto só podem ser acessados) no intervalo entre a sua criação e o término da execução do método. Variáveis em Java ©2012 Ludimila Monjardim Casagrande 7
  • 8. Exemplo public class Conta { private double saldo; public Conta ( ) { } public Conta (double s) { s é uma variável local e this.saldo = s; saldo é uma variável de } instância public void creditar (double valor) { saldo = saldo + valor; } public void debitar (double valor) { saldo = saldo - valor; } Os construtores normalmente public double obterSaldo ( ) { inicializam os atributos da return saldo; classe. } } Variáveis em Java ©2012 Ludimila Monjardim Casagrande 8
  • 9. Variáveis e Inicialização  Como vimos, os atributos são automaticamente inicializados com um valor default de acordo com o seu tipo, caso não tenham sido explicitamente inicializados na sua declaração.  Variáveis de método não são automaticamente inicializadas e, portanto, seus valores iniciais devem ser obrigatoriamente definidos de forma explícita antes de serem utilizadas. Variáveis em Java ©2012 Ludimila Monjardim Casagrande 9
  • 10. Exemplo de Variáveis de Método  Método 1: public int errado( ) { int i; return i+5; Erro de compilação na linha 3 }  Método 2: public int certo( ) { int i = 0; Variáveis locais devem ser inicializadas return i+5; antes de serem utilizadas } Variáveis em Java ©2012 Ludimila Monjardim Casagrande 10
  • 11. Exemplo de Variáveis de Método public class Principal { public static void main (String[ ] args) { Conta c = new Conta( ); int i = 0; Se as variáveis c e i não while (i < 10) { forem explicitamente c.creditar(i); inicializadas ocorre erro de compilação. i++; } System.out.println(c.obterSaldo()); } Obs.: Debugar para observar o } comportamento. Variáveis em Java ©2012 Ludimila Monjardim Casagrande 11
  • 12. Alocação de Memória em Java  Revisando o exemplo:  Data hoje = new Data(21, 10, 2006); hoje ? hoje 0x0123 dia 0 dia 21 mes 0 mes 10 ano 0 ano 2006 Variáveis em Java ©2012 Ludimila Monjardim Casagrande 12
  • 13. Alocação de Memória em Java  Quando um objeto é criado, pela chamada de new <construtor>, os seguintes passos acontecem: 1. Um espaço de memória é alocado para o objeto criado e suas variáveis de instância são inicializadas com seus valores default 2. As inicializações explícitas programadas para as variáveis de instância são realizadas 3. O construtor chamado é executado 4. O endereço de memória no qual o objeto está alocado é retornado e atribuído para a variável que referencia o objeto Variáveis em Java ©2012 Ludimila Monjardim Casagrande 13
  • 14. Exemplo Após Data b = a; public class Teste { x 8 public static void main(String[] args) { y 7 a 0x0123 int x = 7; 21 10 2006 b 0x0123 int y = x; x = 8; Data a = new Data(21, 10, 2006); Data b = a; Após a = new Data(28, 10,2006); x 8 a = new Data(28, 10, 2006); 7 y } a 0x0456 28 10 2006 } b 0x0123 21 10 2006 Quais são os resultados finais? Variáveis em Java ©2012 Ludimila Monjardim Casagrande 14