O documento discute a manipulação de caracteres em Java, incluindo a relação entre os tipos char e int e a diferença entre tipos de valor e tipos de referência. É apresentado como cada caractere tem um código único e como caracteres podem ser convertidos entre char e int. A distinção entre passagem por valor e passagem por referência é explicada.
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
1. Aula 5 Manipulação de caracteres Relação entre os tipos char e int Tipos de valor vs. tipos de referência
2. Da aula anterior… Atribuições especiais Matrizes em Java Tipos de ciclos (ciclo for) Classes pacote 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 2
3. Tipo primitivo char Cada variável char guarda um caractere Valores literais entre plicas Exemplo char letter = 'k'; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 3 letter letter : char ou k k
4. Caracteres: códigos Cada caractere tem código único Códigos de letras latinas Consecutivos Ordem alfabética Minúsculas e maiúsculas separadas 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 4 Sem marcas diacríticas!
5. Conversão entre char e int Caracteres convertíveis para códigos Códigos convertíveis para caracteres Exemplo char original = 'b'; int code = (int) original; char recovered = (char) code; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 5 original b code 98 recovered b
6. Caracteres: operadores aritméticos char letter1 = 'c'; letter1++; char letter2 = 'b'; letter2--; intdifference = letter1 – letter2; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 6 letter1 letter1 c d letter2 letter2 b a difference 3 100 - 97
7. Caracteres: operadores relacionais Comparam códigos! Exemplos c > 'a' – Caractere em c tem código superior ao de “a” c1 <= c2 – Caractere em c1 tem código não superior ao caractere em c2 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 7
8. Exemplo: matriz com minúsculas por ordem alfabética final intnumberOfLetters = 'z' – 'a' + 1; // 26 final char[] letters = new char[numberOfLetters]; for(inti = 0; i != letters.length; i++) letters[i] = (char) ('a' + i); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 8
9. Variáveis que guardam referências. Atribuição: valor vs. referência Tipos primitivos (int, boolean, etc.) int a = 7; int b = a; int c; Tipos de referência (matrizes, classes) int[] a = {1, 2, 3}; int[] b = a; int[] c; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 9 a a 7 Variáveis que guardam valores. b b 7 1 2 3 c c 0 1 2 Excepto no caso de variáveis locais. Variáveis locais têm sempre de ser inicializadas explicitamente. Excepto no caso de variáveis locais. Variáveis locais têm sempre de ser inicializadas explicitamente. 0 null
10. Invocação: passagem por valor publicstaticvoidincrement(intvalue) { value++; } … main(…) { intnumber = 3; increment(number); out.println(number); } 19-10-2010 Introdução à Programação 10 value = number number value value 3 3 4 Que aparece?
11. Invocação: passagem por valor de uma referência publicstaticvoidincrementFirstOf(final int[] values) { values[0]++; } … main(…) { int[] numbers = {1, 2, 3, 4}; incrementFirstOf(numbers); out.println(numbers[0]); } 19-10-2010 Introdução à Programação 11 values = numbers numbers values 0 1 2 3 2 1 0 4 3 Que aparece?
12. Problema: Cifra de César 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 12 a b c x y z … a b c d e z … Cifra com deslocação de 2. a t a c a r c v c e c t cifra Saiba mais na Wikipédia.
13. A reter Manipulação de caracteres Relação entre os tipos char e int Tipos de valor vs. tipos de referência 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 13
14. A ler... Capítulos 1 a 4 do livro: Y. Daniel Liang, Introduction to Java Programming, 8.ª edição, Prentice-Hall, 2010. ISBN: 978-0-13-213080-6 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 14
15. Sumário Manipulação de caracteres Relação entre os tipos char e int Tipos de valor vs. tipos de referência 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 15