Capítulo 4 - ruirossi.pro.brruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap04.pdfRui Rossi...

Post on 21-Oct-2019

2 views 0 download

Transcript of Capítulo 4 - ruirossi.pro.brruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap04.pdfRui Rossi...

Capítulo 4Capítulo 4

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Variáveis e ConstantesVariáveis e Constantes

Objetivos do Capítulo

� Apresentar os tipos primitivos disponíveis no Java.

� Analisar a forma de uso dos tipos primitivos para a declaração de variáveis capazes de armazenar números inteiros, números fracionários, caracteres e valores booleanos.

� Explorar as técnicas que devem ser empregadas para a

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Explorar as técnicas que devem ser empregadas para a transferência de dados entre variáveis de diferentes tipos.

� Indicar a sintaxe a ser observada para a declaração e uso de constantes.

Tipos de Dados

� Tipos primitivos

� São os tipos básicos de dados da linguagem

� Capazes de armazenar um único valor

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Tipos de Dados

� Números inteiros

Tipo Tamanho Mínimo Máximo

byte 1 byte -128 127

short 2 bytes -32768 32767

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

short 2 bytes -32768 32767

int 4 bytes -2147483648 2147483647

long 8 bytes -9.223.372.036.854.775.808 9.223.372.036.854.775.807

Tipos de Dados

� Números decimais

Tipo Tamanho Mínimo Máximo Precisão

float 4 bytes -3,4028E+38 3,4028E+38 6-7 dígitos

double 8 bytes -1,7976E+308 1,7976E+308 15 dígitos

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

double 8 bytes -1,7976E+308 1,7976E+308 15 dígitos

Tipos de Dados

� Caracteres solitários

� Tipo char

� Padrão unicode

� 2 bytes

� Representa até 65536 (216)

� Código decimal de 0 a 65536

� Código hexadecimal de ‘\u0000’ a ‘\uFFFF’

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Tipos de Dados

� Caracteres: dígitos

Dígito Código

0 48

1 49

2 50

3 51

4 52

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

4 52

5 53

6 54

7 55

8 56

9 57

Tipos de Dados

� Caracteres: alfabeto

Letra Código Letra Código Letra Código Letra Código

A 65 N 78 a 97 n 110

B 66 O 79 b 98 o 111

C 67 P 80 c 99 p 112

D 68 Q 81 d 100 q 113

E 69 R 82 e 101 r 114

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

E 69 R 82 e 101 r 114

F 70 S 83 f 102 s 115

G 71 T 84 g 103 t 116

H 72 U 85 h 104 u 117

I 73 V 86 i 105 v 118

J 74 W 87 j 106 w 119

K 75 X 88 k 107 x 120

L 76 Y 89 l 108 y 121

M 77 Z 90 m 109 z 122

Tipos de Dados

� Caracteres especiais

Descrição Decimal Hexadecimal Atalho

Avanço de linha 10 \u000a \n

Avanço de parágrafo (tabulação) 9 \u0009 \t

Retorno de linha 13 \u000d \r

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Retorno de um espaço 11 \u0008 \b

Apóstrofe 39 \u0027 \‘

Aspas duplas 34 \u0022 \“

Barra invertida 92 \u005c \\

Tipos de Dados

� Tipo lógico

� Tipo boolean

� Valores possíveis: {true, false}

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Variáveis

� Conceito: unidades básicas de armazenamento temporário de dados.

� Composição:

� Tipo

� Identificador

� Escopo

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Quantidade de memória ocupada: depende do tipo

Variáveis

� Declaração:

� Local: qualquer parte do corpo de uma classe

� Escopo: definido pelo local

� Sintaxe:

<Tipo> <Identificador>;

� Exemplos:

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Exemplos:

byte bt;

short sh;

int it;

long lg;

float fl;

double db;

char ch;

boolean bl;

Variáveis

� Inicialização

� Conceito: atribuição de um valor a uma variável.

� O símbolo de igualdade é o operador de atribuição.

� Sintaxe:

<Identificador> = <valor>;

� Exemplos:

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Exemplos:

it = 123;

db = 45.7;

ch = 'C';

bl = false;

Variáveis

� Declaração e inicialização

� Sintaxe:

<Tipo> <Identificador> = <valor>;

� Exemplos:

int it = 123;

double db = 45.7;

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

double db = 45.7;

char ch = 'C';

boolean bl = false;

Variáveis

� Múltiplas declarações em instrução única

� Sintaxe:

<Tipo> <Identificador1>, <Identificador2>, <Identificador3>, [<IdentificadorN>];

� Exemplos:

double valor_inicial, desconto, liquido;

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

double valor_inicial, desconto, liquido;

char enter, tab;

Variáveis

� Múltiplas declarações e inicializações em instrução única

� Sintaxe:

<Tipo> <Identificador1> = <Valor1>,

<Identificador2> = <Valor2>,

<Identificador3> = <Valor3>,

[<IdentificadorN>] = [<ValorN>];

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Exemplos:

double valor_inicial = 47.8, desconto = 0.8, liquido = 47;

char enter = (char)10, tab = (char)9;

Variáveis

� Transferência de dado entre variáveis de mesmo tipo

� Sintaxe:

<variável_de_destino> = <variável_de_origem>;

� Exemplos:

int primeiro_inteiro, segundo_inteiro;

primeiro_inteiro = 10;

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

primeiro_inteiro = 10;

segundo_inteiro = primeiro_inteiro;

Variáveis

Código 4.1 – NumerosInteiros.java.1 public class NumerosInteiros {2 public static void main(String[] args) {3 byte bt;4 short sh;5 int it;6 long lg;78 bt = 127;9 sh = 32767;10 it = 2147483647;

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

10 it = 2147483647;11 lg = 9223372036854775807L;1213 System.out.println("\nLimite superior:");14 System.out.println("byte:\t" + bt);15 System.out.println("short:\t" + sh);16 System.out.println("int:\t" + it);17 System.out.println("long:\t" + lg);1819 bt = -128;20 sh = -32768;

Variáveis

Código 4.1 – NumerosInteiros.java.21 it = -2147483648;22 lg = -9223372036854775808L;2324 System.out.println("\nLimite inferior:");25 System.out.println("byte:\t" + bt);26 System.out.println("short:\t" + sh);27 System.out.println("int:\t" + it);28 System.out.println("long:\t" + lg);29 }30 }

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

30 }

Variáveis

Código 4.2 – NumerosDecimais.java.1 import javax.swing.JOptionPane;23 public class NumerosDecimais {4 public static void main(String[] args) {5 float float_1,float_2;6 double double_1 = 5.123456789,double_2 = 10.0;78 float_1 = 1.02F;9 float_2 = 2.0F;10

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

1011 String mensagem = "Conteúdo das variáveis:" +12 "\nfloat_1 = " + float_1 + "\nfloat_2 = " + float_2 +13 "\ndouble_1 = " + double_1 + "\ndouble_2 = " + double_2;1415 JOptionPane.showMessageDialog(null,mensagem);16 System.exit(0);17 }18 }

Variáveis

Código 4.2 – NumerosDecimais.java.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Conversões Entre Tipos Numéricos

� Promoção automática

� Tipo de destino > Tipo de origem

byte → short → int → long → float → double

char → int

� Exemplos:

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

byte bt = 127;

double db = bt;

Conversões Entre Tipos Numéricos

� Conversão explícita

� Tipo de destino < Tipo de origem

byte ← short ← int ← long ← float ← double

char ← int

� Exemplos:

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

int it = 55;

byte bt = (byte)it;

Conversões Entre Tipos Numéricos

� Ajuste circular

� Capacidade do destino < valor de origem

� Exemplos:

int it = 130;

byte bt = (byte)it;//bt recebe -126

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Limite do byte: 127

� Valor excedente: 130 – 127 = 3

127 + 1 = -128

-128 + 1 = -127

-127 + 1 = -126

Conversões Entre Tipos NuméricosCódigo 4.3 – ConversaoNumeros.java.1 import javax.swing.JOptionPane;23 public class ConversaoNumeros {4 public static void main(String[] args) {5 int it1 = 15635;6 long lg = it1;7 float fl = it1;8 short sh = (short)it1;910 double db = 24.75;11 int it2 = (int)db;

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

11 int it2 = (int)db;12 int it3 = (int)Math.round(db);1314 String st = "Conteúdo das variáveis:\n" +15 "it1 = " + it1 + "\n" + "lg = " + lg + "\n" + 16 "fl = " + fl + "\n" + "sh = " + sh + "\n\n" +17 "db = " + db + "\n" + "it2 = " + it2 + "\n" +18 "it3 = " + it3;1920 JOptionPane.showMessageDialog(null,st);21 System.exit(0);22 }23 }

Conversões Entre Tipos Numéricos

Código 4.3 – ConversaoNumeros.java.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Conversões de Textos para Tipos Numéricos

� Tome a string abaixo:

String texto = “15”;

� Conversão para int (4 bytes)

int it = Integer.parseInt(texto);

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Conversão para long (8 bytes)

long lg = Long.parseLong(texto);

Conversões de Textos para Tipos Numéricos

� Conversão para short (2 bytes)

short sh = Short.parseShort(texto);

� Conversão para byte (1 byte)

byte bt = Byte.parseByte(texto);

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

� Conversão para char (2 bytes)

char ch = (char)Integer.parseInt(st);

Conversões de Textos para Tipos Numéricos

� Conversão para float

float fl = Float.parseFloat(texto);

� Conversão para double

double db = Double.parseDouble(texto);

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Conversões de Textos para Tipos NuméricosCódigo 4.4 – ConversaoTextoNumeros.java.1 import java.util.Scanner;23 public class ConversaoTextoNumeros {4 public static void main(String[] args) {5 System.out.print("\nInforme um número: ");6 Scanner scan = new Scanner(System.in);7 String texto = scan.nextLine();89 double db = Double.parseDouble(texto);10 float fl = Float.parseFloat(texto);11 long lg = Integer.parseInt(texto);

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

11 long lg = Integer.parseInt(texto);12 int it = Integer.parseInt(texto);13 short sh = (short)Integer.parseInt(texto);14 byte bt = (byte)Integer.parseInt(texto);15 char ch = (char)Integer.parseInt(texto);1617 System.out.printf("\nConteúdo das variáveis:" +18 "\n db = \t %f \n fl = \t %f \n lg = \t %d \n it = \t %d" +19 "\n sh = \t %d \n bt = \t %d \n ch = \t %c \n\n",20 db,fl,lg,it,sh,bt,ch);21 }22 }

Conversões de Textos para Tipos Numéricos

Código 4.4 – ConversaoTextoNumeros.java.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Conversões de Tipos Numéricos para Textos

� Sintaxe

String <nome> = String.valueOf(<variável_de_origem>);

� Exemplos:

byte inteiro = 127;

float decimal = 4.55f;

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

float decimal = 4.55f;

String st_byte = String.valueOf(inteiro);

String st_float = String.valueOf(decimal);

Conversões de Tipos Numéricos para TextosCódigo 4.5 – ConversaoNumerosTexto.java.1 import java.util.Scanner;23 public class ConversaoNumerosTexto {4 public static void main(String[] args) {5 Scanner scan = new Scanner(System.in);6 String string_inteiro, string_decimal;7 double numero_decimal;8 int numero_inteiro;910 System.out.print("\nInforme um número inteiro: ");11 numero_inteiro = scan.nextInt();12

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

1213 System.out.print("Informe um número decimal: ");14 numero_decimal = scan.nextDouble();1516 string_inteiro = String.valueOf(numero_inteiro);17 string_decimal = String.valueOf(numero_decimal);1819 System.out.println("\nConteúdo das strings:" +20 "\n string_inteiro = \t" + string_inteiro +21 "\n string_decimal = \t" + string_decimal);22 System.out.println();23 }24 }

Conversões de Tipos Numéricos para Textos

Código 4.5 – ConversaoNumerosTexto.java.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Obtendo o Código de um Caractere

� Receita

� Transferi-lo para um int

� Exemplo:

char caractere = ‘A’;

int codigo = caractere;

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

int codigo = caractere;

Obtendo o Código de um Caractere

Código 4.6 – ConversaoCaractereNumero.java.1 import java.util.Scanner;23 public class ConversaoCaractereNumero {4 public static void main(String[] args) {5 Scanner scan = new Scanner(System.in);67 System.out.print("\nInforme um caractere:\t");8 String texto = scan.nextLine();9 char caractere = texto.charAt(0);10 int codigo = (int)caractere;

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

10 int codigo = (int)caractere;1112 System.out.println("Código do caractere:\t" + codigo);13 System.out.println();14 }15 }

Obtendo o Caractere Correspondente a um Número

� Receita

� Transferi-lo para um char

� Conversão requerida

� Exemplo:

int numero = 65;

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

int numero = 65;

char caractere = (char)numero;

Obtendo o Caractere Correspondente a um NúmeroCódigo 4.7 – ConversaoNumeroCaractere.java.1 import java.util.Scanner;23 public class ConversaoNumeroCaractere {4 public static void main(String[] args) {5 Scanner scan = new Scanner(System.in);67 System.out.print("\nInforme um número inteiro:\t");8 String texto = scan.nextLine();9 int numero = Integer.parseInt(texto);10 char caractere = (char)numero;11

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

1112 System.out.println("Caractere correspondente:\t" + caractere);13 System.out.println();14 }15 }

Constantes

� Conceito

� Unidades básicas de armazenamento de dados

� Conteúdo fixo

� Sintaxe:

final <tipo> <identificador> = <valor>;

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

final <tipo> <identificador> = <valor>;

� Exemplos:

final int VALOR_PI = 3,1416

Constantes

Código 4.8 – Constantes.java.1 public class Constantes {2 static final double COFINS = 3.0;3 static final double PIS = 0.65;4 }

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

ConstantesCódigo 4.9 – CalculoImpostos.java.1 import java.util.Scanner;2 import java.text.NumberFormat;34 public class CalculoImpostos {5 public static void main(String[] args) {6 Scanner scan = new Scanner(System.in);7 NumberFormat nf = NumberFormat.getCurrencyInstance();89 System.out.print("\nInforme o valor do faturamento:\t");10 double faturamento = scan.nextDouble();11 double valor_cofins = faturamento * Constantes.COFINS / 100;

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

11 double valor_cofins = faturamento * Constantes.COFINS / 100;12 double valor_pis = faturamento * Constantes.PIS / 100;13 double total_impostos = valor_cofins + valor_pis;1415 System.out.println("COFINS (3%):\t" + nf.format(valor_cofins));16 System.out.println("PIS (0,65%):\t" + nf.format(valor_pis));17 System.out.println("TOTAL:\t\t" + nf.format(total_impostos));18 System.out.println();19 }20 }

Constantes

Código 4.9 – CalculoImpostos.java.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Exercício 1

� Crie um novo aplicativo, chamado Exercicio0401, que solicite três dados ao seu usuário: seu nome completo, seu sexo e sua renda familiar. Todos estes dados devem ser captados na própria janela de comando e, para isso, você deve utilizar a classe java.util.Scanner. O nome deve ser armazenado em um objeto do tipo String, o sexo deve ser armazenado em uma variável do tipo char e a renda familiar deve ser armazenada em uma variável do tipo double. Ao final, o aplicativo deve imprimir os três dados informados no mesmo formato em que se apresentam na figura abaixo.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

abaixo.

Exercício 2

� Crie um novo aplicativo, chamado Exercicio0402, que solicite três dados ao seu usuário: seu nome completo, seu sexo e sua renda familiar. Todos estes dados devem ser captados através de diálogos gráficos e, para isso, você deve utilizar a classe javax.swing.JOptionPane. O nome deve ser armazenado em um objeto do tipo String, o sexo deve ser armazenado em uma variável do tipo char e a renda familiar deve ser armazenada em uma variável do tipo double. Ao final, o aplicativo deve exibir uma mensagem através de um diálogo gráfico. Esta mensagem deve apresentar os três dados informados no mesmo formato em que se

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

apresentar os três dados informados no mesmo formato em que se apresentam nas figuras abaixo.

Exercício 3

� Crie um novo aplicativo, chamado Exercicio0403, que solicite um número inteiro e calcule o seu quadrado. Tanto a captação do número quanto a exibição do resultado devem ser feitas na própria janela de comando. A figura abaixo ilustra as saídas que devem ser produzidas por este aplicativo.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Exercício 4

� Crie um novo aplicativo, chamado Exercicio0404, que solicite um número inteiro e calcule o seu cubo. Tanto a captação do número quanto a exibição do resultado devem ser feitas através de diálogos gráficos. A figura abaixo ilustra os diálogos que deverão ser produzidas por este aplicativo.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Exercício 5

� Crie um novo aplicativo, chamado Exercicio0405, que solicite três dados: o nome de um vendedor, o valor de vendas realizado por ele em um determinado mês e o percentual de comissão a que ele tem direito. Todos estes dados devem ser captados na própria janela de comando. O nome deve ser armazenado em um objeto do tipo String e os outros dois dados devem ser armazenados em variáveis do tipo double. A tarefa do aplicativo é calcular e exibir o valor que deve ser pago a este vendedor a título de comissão. A figura abaixo ilustra as saídas que devem ser produzidas por este aplicativo.

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Exercício 6

� Crie um novo aplicativo, chamado Exercicio0406, que solicite dois dados ao seu usuário: o seu peso e a sua altura. Estes dados devem ser captados na própria janela de comando. Tanto o peso quanto a altura devem ser armazenados em variáveis do tipo double. A tarefa do aplicativo é calcular o IMC (Índice de Massa Corporal) do usuário. A fórmula que deve ser utilizada para este cálculo é a seguinte:

IMC = P ÷ A2

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Exercício 7

� Crie um novo aplicativo, chamado Exercicio0407, que solicite um único caractere e informe qual é o caractere seguinte na tabela Unicode. As figuras abaixo ilustram qual deverá ser o resultado quando for informada letra C. Você também pode observar uma tabela com algumas entradas possíveis para este aplicativo e as saídas correspondentes que são esperadas.

Entrada Saída

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Entrada Saída

A B

a b

E F

2 3

9 :

Z [

z {

! “

Contato

Com o autor:

Rui Rossi dos Santos

E-mail: livros@ruirossi.pro.br

Web Site: http://www.ruirossi.pro.br

Com a editora:

Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Com a editora:

Editora NovaTerra

E-mail Geral: contato@editoranovaterra.com.br

E-mail Comercial: comercial@editoranovaterra.com.br

Web Site: http://www.editoranovaterra.com.br