• Nenhum resultado encontrado

31Todos os direitos reservados a 3Way Networks

No documento Linguagem Java COMPLETA (páginas 31-33)

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 25

double d1 = 123.4;

double d2 = 1.234e2; // mesmo valor de d1, mas em notação científica float f1 = 123.4f;

Tamanho (bits) Tipo Faixa 32 float -231 a 231- 1 64 double -263 a 263- 1 Tabela 3.2: Tipos e faixa de valores dos Número Fracionários

3.6.2.5 Exemplos de declarações e atribuições

O seguinte programa demonstra como declarar e atribuir valores para variáveis dos tiposint, float, boolean, char e String:

public class Atribui {

public static void main (String args []) { // declara variavel integer

int x, y;

// declara variavel ponto-flutuante float z = 3.414f;

// declare e atribui double double w = 3.1415;

// declare e atribui boolean boolean verdadeiro = true; // declare variavel caracter char c;

// declare variavel String String str;

// declare e atribui variavel String String str1 = "bye";

// atribui valor para variavel char c = 'A';

// atribui valor a variavel String str = "Pratique declaracoes!";

// atribui valor a variaveis inteiras x = 6;

y = 1000;

//atribuições não permitidas

// y = 3.1415926; // 3.1415926 não e inteiro // requer casting e decimal será // truncado.

//w = 175,000; // A vírgula (,) não pode aparecer,

//em ponto-flutuante use (.); //verdadeiro = 1; // confusão comum feita por

// ex-programadores C/C++

//z = 3.14156; // Não pode atribuir double dentro de um

// float; Isto requer conversão. }

}

Listagem 3.4 – Exemplo atribuições

Os literais dos tipos fracionários são do tipo

de dados double e do tipo float.

//atribuindo valor a variável referência Carro carro1 = new Carro();

carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização //criando novo alias

Carro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de Instância

Cada objeto criado deverá ter sua própria instância de variáveis (atributos) definidas pela classe. Os métodos definem o comportamento de um objeto. Isto é importante, pois denota que um método pertence a cada objeto da classe. Porém não devemos confundir isto com a implementação do método, que é compartilhada por todas as instâncias da classe.

2.3.1 Invocação de Métodos

Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operação apropriada que foi definida no objeto. Em Java, isto é feito pela

chamada de um método em um objeto usando o operador binário "." (ponto),

devendo especificar a mensagem completa: o objeto que é o recebedor da mensagem, o método a ser invocado e os argumentos para o método (se houver). O método invocado no recebedor pode também enviar informações de volta ao objeto chamador através de um valor de retorno. O método chamado deve ser um que esteja definido pelo objeto.

Os valores das variáveis em um objeto constituem

o seu estado. Dois objetos distintos têm

o mesmo estado se suas variáveis membro têm os

mesmos valores.

3.7 Conversões

Já dissemos que o Java é bastante rigoroso quanto aos tipos das variáveis, tudo tem haver com o tamanho de cada tipo, ou com quantidade de bits que cada tipo exige para representar o dado a ser armazenado na variável. Enquanto um número fracionário costuma ser armazenado em uma variável do tipodouble(64 bits), tentar atribui-

lo a uma variável do tipoint(32 bits) não funciona pois é um código que diz: "i deve receber tudo que está em d",

mas não se sabe se d realmente é um número inteiro ou não, ou seja, Java não consegue antecipar se o valor armazenado emd vai caber emi.

double d = 3.1415;

int i = d; // não compila

O mesmo ocorre no seguinte trecho:

int i = 3.14;

O mais interessante, é que nem mesmo o seguinte código compila:

double d = 5; // ok, o double pode conter um número inteiro

int i = d; // não compila

Apesar de 5 ser um bom valor para um int, o compilador não tem como saber que valor estará dentro desse double no momento da execução, mesmo que você esteja lendo o valor literal de d no seu código fonte, o compilador não tem como garantir que essa atribuição ocorra sem perda de valores. É como colocar uma xícara de café grande numa xícara pequena, alguma coisa vai derramar. Já no caso a seguir é o contrário:

int i = 5; double d2 = i;

O código acima compila sem problemas, já que umdouble pode guardar um número com ou sem ponto flutuante. Todos os inteiros representados por uma variável do tipo int podem ser guardados em uma variável

double, então não haverá problemas com o código acima.

3.7.1 Casting de Tipos Primitivos

Às vezes, precisamos que um número quebrado seja arredondado e armazenado em um número inteiro. Para fazer isso sem que haja o erro de compilação, é preciso ordenar que o número quebrado seja moldado (cast) como um número inteiro. Esse processo recebe o nome de casting.

double d3 = 3.14; int i = (int) d3;

O casting foi feito para moldar a variável d3 como um int. O valor de i agora é 3. O mesmo ocorre entre valores int e long.

long x = 10000;

int i = x; // não compila, pois pode estar perdendo informação

E, se quisermos realmente fazer isso, fazemos o casting:

long x = 10000; int i = (int) x;

3.7.2 Literais numéricos e Promoção Numérica

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 12

//atribuindo valor a variável referência Carro carro1 = new Carro();

carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização //criando novo alias

Carro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de Instância

Cada objeto criado deverá ter sua própria instância de variáveis (atributos) definidas pela classe. Os métodos definem o comportamento de um objeto. Isto é importante, pois denota que um método pertence a cada objeto da classe. Porém não devemos confundir isto com a implementação do método, que é compartilhada por todas as instâncias da classe.

2.3.1 Invocação de Métodos

Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operação apropriada que foi definida no objeto. Em Java, isto é feito pela

chamada de um método em um objeto usando o operador binário "." (ponto),

devendo especificar a mensagem completa: o objeto que é o recebedor da mensagem, o método a ser invocado e os argumentos para o método (se houver). O método invocado no recebedor pode também enviar informações de volta ao objeto chamador através de um valor de retorno. O método chamado deve ser um que esteja definido pelo objeto.

Os valores das variáveis em um objeto constituem

o seu estado. Dois objetos distintos têm

o mesmo estado se suas variáveis membro têm os

mesmos valores.

33

No documento Linguagem Java COMPLETA (páginas 31-33)

Documentos relacionados