Capítulo 4 Variáveis e Constantes Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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 transferência de dados entre variáveis de diferentes tipos. Indicar a sintaxe a ser observada para a declaração e uso de constantes. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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 int 4 bytes -2147483648 2147483647 long 8 bytes -9.223.372.036.854.775.808 9.223.372.036.854.775.807 Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Tipos de Dados Números decimais Rui Rossi dos Santos Tipo Tamanho float double Mínimo Máximo Precisão 4 bytes -3,4028E+38 3,4028E+38 6-7 dígitos 8 bytes -1,7976E+308 1,7976E+308 15 dígitos Programação de Computadores em Java Editora NovaTerra 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 Rui Rossi dos Santos Dígito 0 Código 48 1 2 49 50 3 4 51 52 5 6 53 54 7 8 55 56 9 57 Programação de Computadores em Java Editora NovaTerra Tipos de Dados Caracteres: alfabeto Letra Código A 65 Letra Código N 78 Letra Código a 97 Letra Código n 110 B C 66 67 O P 79 80 b c 98 99 o p 111 112 D E 68 69 Q R 81 82 d e 100 101 q r 113 114 F G 70 71 S T 83 84 f g 102 103 s t 115 116 H 72 U 85 h 104 u 117 I J 73 74 V W 86 87 i j 105 106 v w 118 119 K L 75 76 X Y 88 89 k l 107 108 x y 120 121 M 77 Z 90 m 109 z 122 Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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 Retorno de um espaço 11 \u0008 \b Apóstrofe 39 \u0027 \‘ Aspas duplas 34 \u0022 \“ Barra invertida 92 \u005c \\ Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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 Quantidade de memória ocupada: depende do tipo Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Variáveis Declaração: Local: qualquer parte do corpo de uma classe Escopo: definido pelo local Sintaxe: <Tipo> <Identificador>; Exemplos: byte bt; short sh; int it; long lg; float fl; double db; char ch; boolean bl; Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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: it = 123; db = 45.7; ch = 'C'; bl = false; Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Variáveis Declaração e inicialização Sintaxe: <Tipo> <Identificador> = <valor>; Exemplos: int it = 123; double db = 45.7; char ch = 'C'; boolean bl = false; Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Variáveis Múltiplas declarações em instrução única Sintaxe: <Tipo> <Identificador1>, <Identificador2>, <Identificador3>, [<IdentificadorN>]; Exemplos: double valor_inicial, desconto, liquido; char enter, tab; Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Variáveis Múltiplas declarações e inicializações em instrução única Sintaxe: <Tipo> <Identificador1> = <Valor1>, <Identificador2> = <Valor2>, <Identificador3> = <Valor3>, [<IdentificadorN>] = [<ValorN>]; Exemplos: double valor_inicial = 47.8, desconto = 0.8, liquido = 47; char enter = (char)10, tab = (char)9; Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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; segundo_inteiro = primeiro_inteiro; Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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; 7 8 bt = 127; 9 sh = 32767; 10 it = 2147483647; 11 lg = 9223372036854775807L; 12 13 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); 18 19 bt = -128; 20 sh = -32768; Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Variáveis Código 21 22 23 24 25 26 27 28 29 30 } 4.1 – NumerosInteiros.java. it = -2147483648; lg = -9223372036854775808L; System.out.println("\nLimite inferior:"); System.out.println("byte:\t" + bt); System.out.println("short:\t" + sh); System.out.println("int:\t" + it); System.out.println("long:\t" + lg); } Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Variáveis Código 4.2 – NumerosDecimais.java. 1 import javax.swing.JOptionPane; 2 3 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; 7 8 float_1 = 1.02F; 9 float_2 = 2.0F; 10 11 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; 14 15 JOptionPane.showMessageDialog(null,mensagem); 16 System.exit(0); 17 } 18 } Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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: byte bt = 127; double db = bt; Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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: int it = 55; byte bt = (byte)it; Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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 Limite do byte: 127 Valor excedente: 130 – 127 = 3 127 + 1 = -128 -128 + 1 = -127 -127 + 1 = -126 Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Conversões Entre Tipos Numéricos Código 4.3 – ConversaoNumeros.java. 1 import javax.swing.JOptionPane; 2 3 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; 9 10 double db = 24.75; 11 int it2 = (int)db; 12 int it3 = (int)Math.round(db); 13 14 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; 19 20 JOptionPane.showMessageDialog(null,st); 21 System.exit(0); 22 } 23 } Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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); Conversão para long (8 bytes) long lg = Long.parseLong(texto); Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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); Conversão para char (2 bytes) char ch = (char)Integer.parseInt(st); Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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éricos Código 4.4 – ConversaoTextoNumeros.java. 1 import java.util.Scanner; 2 3 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(); 8 9 double db = Double.parseDouble(texto); 10 float fl = Float.parseFloat(texto); 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); 16 17 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 } Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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; String st_byte = String.valueOf(inteiro); String st_float = String.valueOf(decimal); Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Conversões de Tipos Numéricos para Textos Código 4.5 – ConversaoNumerosTexto.java. 1 import java.util.Scanner; 2 3 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; 9 10 System.out.print("\nInforme um número inteiro: "); 11 numero_inteiro = scan.nextInt(); 12 13 System.out.print("Informe um número decimal: "); 14 numero_decimal = scan.nextDouble(); 15 16 string_inteiro = String.valueOf(numero_inteiro); 17 string_decimal = String.valueOf(numero_decimal); 18 19 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 } Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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 Obtendo o Código de um Caractere Código 4.6 – ConversaoCaractereNumero.java. 1 import java.util.Scanner; 2 3 public class ConversaoCaractereNumero { 4 public static void main(String[] args) { 5 Scanner scan = new Scanner(System.in); 6 7 System.out.print("\nInforme um caractere:\t"); 8 String texto = scan.nextLine(); 9 char caractere = texto.charAt(0); 10 int codigo = (int)caractere; 11 12 System.out.println("Código do caractere:\t" + codigo); 13 System.out.println(); 14 } 15 } Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Obtendo o Caractere Correspondente a um Número Receita Transferi-lo para um char Conversão requerida Exemplo: int numero = 65; char caractere = (char)numero; Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Obtendo o Caractere Correspondente a um Número Código 4.7 – ConversaoNumeroCaractere.java. 1 import java.util.Scanner; 2 3 public class ConversaoNumeroCaractere { 4 public static void main(String[] args) { 5 Scanner scan = new Scanner(System.in); 6 7 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 12 System.out.println("Caractere correspondente:\t" + caractere); 13 System.out.println(); 14 } 15 } Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Constantes Conceito Unidades básicas de armazenamento de dados Conteúdo fixo Sintaxe: final <tipo> <identificador> = <valor>; Exemplos: final int VALOR_PI = 3,1416 Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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 Constantes Código 4.9 – CalculoImpostos.java. 1 import java.util.Scanner; 2 import java.text.NumberFormat; 3 4 public class CalculoImpostos { 5 public static void main(String[] args) { 6 Scanner scan = new Scanner(System.in); 7 NumberFormat nf = NumberFormat.getCurrencyInstance(); 8 9 System.out.print("\nInforme o valor do faturamento:\t"); 10 double faturamento = scan.nextDouble(); 11 double valor_cofins = faturamento * Constantes.COFINS / 100; 12 double valor_pis = faturamento * Constantes.PIS / 100; 13 double total_impostos = valor_cofins + valor_pis; 14 15 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 } Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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 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 apresentam nas figuras abaixo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra 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. Rui Rossi dos Santos Entrada A Saída B a E b F 2 9 3 : Z z ! [ { “ Programação de Computadores em Java Editora NovaTerra Contato Com o autor: Rui Rossi dos Santos E-mail: [email protected] Web Site: http://www.ruirossi.pro.br Com a editora: Editora NovaTerra Telefone: (21) 2218-5314 Web Site: http://www.editoranovaterra.com.br Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra