Capítulo 4 - ruirossi.pro.brruirossi.pro.br/livros/li-rui-pcj-2ed/li-rui-pcj-2ed-cap04.pdfRui Rossi...
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: [email protected]
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: [email protected]
E-mail Comercial: [email protected]
Web Site: http://www.editoranovaterra.com.br