Variáveis e Constantes

Propaganda
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
Download