Java Certified Associate              Jose Berardo  www.especializa.com.br/curso/oca-javaassociate
Agenda              Macrotemas do curso:1.    Introdução às certificações Java2.    Iniciando com Java3.    Tipos de dados ...
PausaTeste de nivelamento
Exercício 1:What will happen when you compile and run the following code?public class ScopeClass{    private int i = 35;  ...
Exercício 2:Which of the following lines will compile without warning or error?A. char d="d";B. float f=3.1415;C. int i=34;...
Exercício 3:Given the following declaration:public class SomeClass{    public int i;    public static void main(String arg...
Exercício 4:Given the following declaration:StringBuilder sb = new StringBuilder();Which of the following are valid uses o...
Exercício 5:Which of the following will return the position of the first letter a where thestring s contains "banana"?A. la...
Exercício 6:Given the following code, which expression displays the word "Equal"?String s1="Java";String s2="java";if(expr...
Agenda3. Tipos de dados de seus detalhes3.1.   Como Java manipula dados3.2.   Variáveis3.3.   Tipos primitivos3.4.   Objet...
Como Java manipula dadosMemória Heap:  Região de memória onde a VM carrega os objetos e aloca dinamicamente  espaços para ...
Como Java manipula dadosToda variável instância de uma classe é dita variável de tipo referência:  Cliente c; // c é uma v...
VariáveisVariáveis podem ser:  Instance variables: Atributos de objeto dinamicamente alocados  Static variables: Atributos...
Variáveis locaisTrês passos na utilização de variáveis locais (declarada dentro de ummétodo):  Declaração    int a;  Inici...
Variáveis locaisChaves demarcam blocos de códigoDeclarações dentro de bloco não são visíveis fora do bloco  {     int a;  ...
Tipos primitivosHá 4 tipos primitivos inteiros com sinal:  byte     8 bits – 1byte     Representa de -128 a 127  short    ...
Tipos primitivos - inteirosTodo literal inteiro é um int   int i = 10;Literais em atribuições simples (=) são convertidos ...
Primitivos - pontos flutuantes Há 2 tipos primitivos de ponto flutuante   float       32 bits – 4bytes       Representa +- 3....
Tipos primitivos - charHá um tipo primitivo inteiro sem sinal  char    16 bits – 2 bytes    Representa de 0 a 65535    Rep...
Tipos primitivos - booleanTipo lógico verdadeiro ou falso   Só admite os literais true ou false   Representação interna de...
Tipos primitivos - promoçõesVariáveis de tipos maiores podem receber tipos menores  byte b = 10;  int i = b;Resultado de o...
Tipos primitivos - castingTodos os tipos possuem casts correspondentes  int i = b;  byte b = (byte) i;Resultado de operaçõ...
Tipos primitivos - castingPodem provocar resultados estranhos por perda de precisão  byte b;  short s = 200;  b = (byte) s...
Tipos primitivos                  8 bits   16 bits   32 bits   64 bitsInteiro sem                            char   sinalI...
Tipos primitivos - denorex“Parece mais não é...”BigDecimal   Objetos para manipulação de números grandes   Utilizam pontos...
WrappersSão usados em coleções ou outros lugares onde só objetos são permitidosClasses wrappers e seus respectivos tipos e...
WrappersEmbora haja relação em os tipos primitivos, não há relação entre as classes  Exceto Boolean e Character, todas as ...
Autoboxing e unboxingAutoboxing é o processo de criação automática do objeto que empacota otipo primitivo:   Character c =...
Wrappers - dicas  Objetos poder ser nulos, mas tipos primitivos não    Integer iObj = null;    int i = iObj; // NullPointe...
Literais, constantes e enumsLiterais são valores absolutos (imutáveis) usados todo o tempo   boleanos: true / false   núme...
Literais, constantes e enumsConstantes são identificadores de valores que não podem variar  São “variáveis” que só admitem ...
Literais, constantes e enums                  O compilador não permite uma segunda atribuição a uma constante:            ...
Literais, constantes e enumsEnumerations são objetos de classes que herdam de java.lang.EnumDeterminam quais os objetos po...
Literais, constantes e enums                     Enums implementam o padrão de projeto Type Safe Enum                     ...
UnicodeTabela de codificação baseada na antiga tabela ASCII, de 7 bits  Seus 128 primeiros caracteres são os mesmos da ASCI...
CharacterClasse wrapper que empacota valores primitivos char   Abrange o padrão Unicode versão 4.0Declara alguns métodos i...
CharSequenceA API traz mais de uma classe que coleciona caracteresjava.lang.CharSequence é uma interface que determina o c...
StringsStrings são coleções de caracteres imutáveisNenhum método de java.lang.String modifica o teor do char[] value que ca...
StringsStrings são normalmente criadas utilizando as aspas   String s = "exemplo";                                   aqui,...
Igualdades entre StringsO operador == checa se as variáveis apontam para o mesmo objeto, ele podeprovar quando a VM utiliz...
Igualdades entre Strings    Utilize o método equals() para checar a igualdade do teor interno das Strings    Utilize equal...
Operações com StringsO operador + concatena Strings, o método concat() também:  String a = "existem 10 tipos de pessoas ";...
Operações com StringsMais comparações com strings  startsWith(String) - true se a String iniciar com a String passada  end...
Operações com Stringslength() - recupera o tamanho da stringcharAt(int) - retorna o caractere da posição informadasubstrin...
Operações com StringslastIndexOf(String) - possui as mesmas sobrecargas de indexOf(), masprocura a última ocorrência em ve...
Conversões números x Strings Classes wrappers possuem métodos estáticos que recuperam um valor numérico a partir de uma St...
StringBufferStringBuffers são CharSequences mutáveis, ou seja, possuem métodos capazesde alterar a sequência de char que c...
StringBuilderClasse inserida na API do Java 5Implementa a mesma funcionalidade da StringBuffer, mas não declara seusmétodo...
Objetivos cobertosUnderstanding how Java handles dataInvestigating the relationships between identifiers, the Java class, a...
Próximos SlideShares
Carregando em…5
×

Oracle Certified Associate - Java Programmer I - aula 3

1.973 visualizações

Publicada em

Slides da terceira aula do curso Java Certified Associate da Especializa Treinamentos.
http://www.especializa.com.br/curso/oca-javaassociate

Esse curso prepara para o novo exame de certificação Java da Oracle, 1z0-803, que proporciona a titulação Oracle Certified Associate, Java Programmer I.
Publicamos mais sobre o assunto em nosso blog:
http://especializa.com.br/blog/2013/02/07/certificacao-java-nos-tempos-da-oracle/

Publicada em: Tecnologia
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.973
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Oracle Certified Associate - Java Programmer I - aula 3

  1. 1. Java Certified Associate Jose Berardo www.especializa.com.br/curso/oca-javaassociate
  2. 2. Agenda Macrotemas do curso:1. Introdução às certificações Java2. Iniciando com Java3. Tipos de dados e seus detalhes4. Expressões e construções5. Usando arrays e coleções6. Construções de laço7. Classes, construtores e métodos8. Herança e polimorfirsmo9. Manipulação de exceções10. Aplicações Java
  3. 3. PausaTeste de nivelamento
  4. 4. Exercício 1:What will happen when you compile and run the following code?public class ScopeClass{ private int i = 35; public static void main(String argv[]){ int i = 45; ScopeClass s = new ScopeClass(); s.someMethod(); } public static void someMethod(){ System.out.println(i); }}A. 35 will be printed outB. 45 will be printed outC. A compile time error will be generatedD. An exception will be thrown
  5. 5. Exercício 2:Which of the following lines will compile without warning or error?A. char d="d";B. float f=3.1415;C. int i=34;D. byte b=257;E. boolean isPresent=true;
  6. 6. Exercício 3:Given the following declaration:public class SomeClass{ public int i; public static void main(String argv[]){ SomeClass sc = new SomeClass(); // Comment line }}Which of the following statements are correct if they replace the commentline?A. System.out.println(i);B. System.out.println(sc.i);C. System.out.println(SomeClass.i);D. System.out.println((new SomeClass()).i);
  7. 7. Exercício 4:Given the following declaration:StringBuilder sb = new StringBuilder();Which of the following are valid uses of the sb variable?A. sb.append(34.5);B. sb.deleteCharAt(34.5);C. sb.toInteger(3);D. sb.toString();
  8. 8. Exercício 5:Which of the following will return the position of the first letter a where thestring s contains "banana"?A. lastIndexOf(2,s);B. s.indexOf(a);C. s.charAt(2);D. indexOf(s,v);
  9. 9. Exercício 6:Given the following code, which expression displays the word "Equal"?String s1="Java";String s2="java";if(expression) { System.out.println("Equal");} else { System.out.println("Not equal");}A. s1==s2B. s1.matchCase(s2)C. s1.equalsIgnoreCase(s2)D. s1.equals(s2)
  10. 10. Agenda3. Tipos de dados de seus detalhes3.1. Como Java manipula dados3.2. Variáveis3.3. Tipos primitivos3.4. Objetos, wrappers e autoboxing3.5. Literais, constantes e enums3.6. Unicode, Character e CharSequence3.7. Strings3.8. StringBuffer e StringBuilder
  11. 11. Como Java manipula dadosMemória Heap: Região de memória onde a VM carrega os objetos e aloca dinamicamente espaços para seus estados O Heap Manager controla como isso é feito Quando um objeto não é mais acessível, o Garbage Collector poderá apagá-lo Antes de detonar o objeto, a VM chama seu método finalize()Memória Stack: Local onde parâmetros e variáveis locais a métodos são armazenados Quando o método sai da pilha de chamadas, esses valores são apagados
  12. 12. Como Java manipula dadosToda variável instância de uma classe é dita variável de tipo referência: Cliente c; // c é uma variável do tipo Cliente c = new Cliente(); // c referencia um novo objeto Cliente Cliente d = c; // d possui a mesma referência de c d.nome = "Duke"; // O nome de d foi alterado (String é classe) System.out.println(c.nome); // "Duke". Alteração afeta c
  13. 13. VariáveisVariáveis podem ser: Instance variables: Atributos de objeto dinamicamente alocados Static variables: Atributos de classe estaticamente alocados (static) Local variables / Automatic variables: Variáveis locais a métodosIdentificadores: Só admitem letras, números, underscores (_) e cifrões ($) Não podem ser iniciados por números Por convenção, variáveis são identificadas por termos com iniciais maiúsculas a partir da segunda palavra
  14. 14. Variáveis locaisTrês passos na utilização de variáveis locais (declarada dentro de ummétodo): Declaração int a; Inicialização a = 5; Utilização System.out.println(a);
  15. 15. Variáveis locaisChaves demarcam blocos de códigoDeclarações dentro de bloco não são visíveis fora do bloco { int a; } a = 10; // ilegal, a não existe fora do blocoDeclarações fora do bloco são visíveis internamente int a, b; { a = 10; int b = 20; // ilegal, b não pode ser redeclarado }
  16. 16. Tipos primitivosHá 4 tipos primitivos inteiros com sinal: byte 8 bits – 1byte Representa de -128 a 127 short 16 bits – 2 bytes Representa de -32.768 a 32.767 int 32 bits – 4 bytes Representa de -2.147.483.648 a 2.147.483.647 long 64 bits – 8 bytes Representa aproximadamente de -9 a 9 quintilhões
  17. 17. Tipos primitivos - inteirosTodo literal inteiro é um int int i = 10;Literais em atribuições simples (=) são convertidos para o tipocorrespondente byte b = 10; byte b = 128; // ilegal, não cabe em um byte short s = 10; int i = 10; long l = 10;Um literal é um long se sucedido de l ou L long a = 10L; int a = 10L; // ilegal
  18. 18. Primitivos - pontos flutuantes Há 2 tipos primitivos de ponto flutuante float 32 bits – 4bytes Representa +- 3.40282347E+38F double 64 bits – 8 bytes Representa +- 1.7976931348623157E+308D Literais ponto flutuante são sempre double float precisa de F ou f, double aceita d ou D double d = 3.14D; double d = 3.14; float f = 3.14F; float f = 3.14; // ilegal 3.14 é double
  19. 19. Tipos primitivos - charHá um tipo primitivo inteiro sem sinal char 16 bits – 2 bytes Representa de 0 a 65535 Representa os caracteres UnicodeAceita números, caracteres entre aspas simples ou notações Unicode char c = 65; System.out.println(c); // imprime A char c = A; char c = u0041; // Hexadecimal, corresponde a ‘A’ int i = A; // corresponde a 65
  20. 20. Tipos primitivos - booleanTipo lógico verdadeiro ou falso Só admite os literais true ou false Representação interna depende da implementação da VM, mas é irrelevante para o programadorNão pode ser convertido para nenhum outro tipo boolean bool1 = true; boolean bool2 = 0; // ilegal, 0 é intAdmitem resultados de operações lógicas boolean metaCumprida = (vendas >= meta);
  21. 21. Tipos primitivos - promoçõesVariáveis de tipos maiores podem receber tipos menores byte b = 10; int i = b;Resultado de operações são do tipo do maior operando ou pelo menos int byte b = 10; long l = 10; int i = 10; l = l + i; i = l + i; // ilegal, l é um long b = b + b; // ilegal, operações são pelo menos int
  22. 22. Tipos primitivos - castingTodos os tipos possuem casts correspondentes int i = b; byte b = (byte) i;Resultado de operações podem ser moldadas para um tipo menor byte b = 10; long l = 10; int i = 10; i = (int) l + i; // l foi convertida para int b = (byte) (b + b); // parênteses necessários para afetar o resultado da operação
  23. 23. Tipos primitivos - castingPodem provocar resultados estranhos por perda de precisão byte b; short s = 200; b = (byte) s; System.out.println(s); // 200 System.out.println(b); // -56
  24. 24. Tipos primitivos 8 bits 16 bits 32 bits 64 bitsInteiro sem char sinalInteiro com byte short int long sinal Ponto float double flutuante Promoções automáticas Castings explícitos
  25. 25. Tipos primitivos - denorex“Parece mais não é...”BigDecimal Objetos para manipulação de números grandes Utilizam pontos decimais, mas é melhor trabalhar com construtores que recebem strings São imutáveis Mais difíceis de trabalharString Parece primitivo, você cria objetos sem dar new, mas são objetosWrappers Objetos imutáveis que encapsulam primitivos
  26. 26. WrappersSão usados em coleções ou outros lugares onde só objetos são permitidosClasses wrappers e seus respectivos tipos empacotados: Boolean - boolean Byte - byte Character - char * Short - short Integer - int * Long - long Float - float Double - doubleSabe lá por que cargas d’água eles não se chamam Char e Int como sugeremos demais
  27. 27. WrappersEmbora haja relação em os tipos primitivos, não há relação entre as classes Exceto Boolean e Character, todas as classes herdam de NumberMétodos estáticos utilitários A classe mãe Number declara diversos métodos estáticos e abstratos: parseByte(String) parseShort(String) parseInt(String) parseLong(String) parseFloat(String) parseDouble(String)Cada classe wrapper redefine (override) seu método específicoPossuem construtores que recebem valores de tipos respectivosPossem métodos convenientes como Intege.intValue() Retornam o valor primitivo empacotado
  28. 28. Autoboxing e unboxingAutoboxing é o processo de criação automática do objeto que empacota otipo primitivo: Character c = A; // A é tipo primitivo char. Isso equivale a: Character c = new Character(A);Unboxing é o processo reverso. Revela o primitivo por dentro do objeto Character c = new Character(A); char meuChar = c; // Isso equivale: char meuChar = c.charValue();Não admitem erro de tipo (Não há relação hierárquica entre essas classes): Integer i = 10; // Correto Integer i = 10L // Errado
  29. 29. Wrappers - dicas Objetos poder ser nulos, mas tipos primitivos não Integer iObj = null; int i = iObj; // NullPointerException int i = iObj.intValue();Comparações Dois primitivos Dois objetos Ambos Tratados como dois a == b Simples comparação Compara referências primitivos, unboxing Compara igualdade do Não compila se a for a.equals(b) Não compila valor primitivo primitivo, do contrário empacotado compara valores
  30. 30. Literais, constantes e enumsLiterais são valores absolutos (imutáveis) usados todo o tempo boleanos: true / false números: 10, 049, 0x35, 23.5F, 3.14D, 35.05E10 caracteres: 65, ‘a’, ‘u0043’, strings: “eita”Literais devem ser compatíveis com o tipo int i = 10L; // Errado long l = 10; long l = 999999999999; // Errado, use o L porque o número extrapola um int
  31. 31. Literais, constantes e enumsConstantes são identificadores de valores que não podem variar São “variáveis” que só admitem uma única atribuiçãoSão declaradas usando a palavra reservada final final double PI = 3.14;Por convenção, identificadores de constantes são expressos totalmente em letrasmaiúsculas final String CONSTANTE = "Minha constante";Palavras são normalmente separadas pelo caractere underscore final String MINHA_CONSTANTE = "É minha e eu não empresto!";
  32. 32. Literais, constantes e enums O compilador não permite uma segunda atribuição a uma constante: public class Constantes { final String CONSTANTE_ERRADA1; // ERRO: Não inicializada final String CONSTANTE_ERRADA2 = "Até agora tá tudo certo"; final String CONSTANTE_ERRADA3; final String CONSTANTE_CERTA1; // Inicializada só no construtor O compiladoracusa o erro no final String CONSTANTE_CERTA2 = "Tudo certo aqui"; construtor public Constantes() { CONSTANTE_CERTA1 = "Não há nada de errado aqui"; final double PI = 3.14; // até aqui tudo certo com PI PI = 3.15; // errado porque PI já recebeu valor } public void metodo() { CONSTANTE_ERRADA2 = "A constante não pode receber novo valor"; CONSTANTE_ERRADA3 = "Constante de classe não pode " + "receber valor em métodos"; } }
  33. 33. Literais, constantes e enumsEnumerations são objetos de classes que herdam de java.lang.EnumDeterminam quais os objetos podem existir a partir de uma classeAs classes são construídas com a palavra reservada enum no lugar de class public enum Direcoes {NORTE, SUL, LESTE, OESTE} minhaBussola.setDirecao(Direcoes.NORTE);Classes enum, possuem o construtor SEMPRE private e herdam os métodos: valueOf(String) - Retorna um enum a partir de uma string passada values() - Retorna um array com os objetos enumObjetos Enum métodos como: ordinal() - Retorna o índice numérico da ordem de declaração do enum No exemplo acima NORTE é 0, SUL é 1 e assim por diante name() - Retorna o nome da constante como uma string
  34. 34. Literais, constantes e enums Enums implementam o padrão de projeto Type Safe Enum public class TamanhoTSE { public static final TamanhoTSE GRANDE = new TamanhoTSE(3); public static final TamanhoTSE MEDIO = new TamanhoTSE(2); public static final TamanhoTSE PEQUENO = new TamanhoTSE(1); private int num; private TamanhoTSE(int num) { this.num = num; } public int getNum() { return this.num; } } enum TamanhoEnum { GRANDE(1), MEDIO(2), PEQUENO(3); O construtor é private int num;private por padrão TamanhoEnum(int num) { this.num = num; } public int getNum() { return this.num; } }
  35. 35. UnicodeTabela de codificação baseada na antiga tabela ASCII, de 7 bits Seus 128 primeiros caracteres são os mesmos da ASCIIÉ representada em Java pelo tipo char, capaz de catalogar 65.536 caracteres No entanto, sua versão atual (6.2) ultrapassa os 110 mil caracteres O char representa os mais comuns delesExemplo de uso do tipo primitivo char char c = 65; System.out.println(c); // Sai ADesde o Java 5, é possível utilizar o tipo int em alguns métodos de classes quelidam com caracteres como Strings
  36. 36. CharacterClasse wrapper que empacota valores primitivos char Abrange o padrão Unicode versão 4.0Declara alguns métodos interessantes: isDigit() - true se o caractere for um número isLetter() - true se o caractere for uma letra isLetterOrDigit() - true se for um dos dois isLowerCase() - true se o caractere for letra em minúsculo isSpace() - true se for um espaço isUpperCase() - true se estiver em caixa alta toLowerCase() - retorna o equivalente em caixa baixa toUpperCase() - retorna o equivalente maiúsculo
  37. 37. CharSequenceA API traz mais de uma classe que coleciona caracteresjava.lang.CharSequence é uma interface que determina o comportamentobásico de coleções de caracteresString, StringBuffer e StringBuilder são as três principais implementações dainterface CharSequence. Por isso definem os seguintes métodos: length() - Tamanho da sequência de caracteres charAt(int) - Caractere na posição fornecida subSequence(int start, int end) - CharSequence contendo o trecho entre start (incluído - intervalo fechado) e end (excluso - intervalo aberto)
  38. 38. StringsStrings são coleções de caracteres imutáveisNenhum método de java.lang.String modifica o teor do char[] value que cadaString carrega Ou seja, os métodos de String retornam novas strings em vez de manipular a original: String s = "um exemplo"; System.out.println(s.toUpperCase()); // retorna a versão em maiúsculo System.out.println(s); // nada foi alterado na String original
  39. 39. StringsStrings são normalmente criadas utilizando as aspas String s = "exemplo"; aqui, dois objetos StringPodem também utilizar o operador new foram criados String s = new String("exemplo"); 0 é a 2 é c’ String s = new String(new char[] {a, b, c}); Só entram 0 e 1 na String final String s = new String(new char[] {a, b, c}, 0, 2); Existem outros construtores ainda menos usuaisNovas strings criadas diretamente entre as aspas são armazenadas em uma áreade memória chamada Pool de Strings Sempre que o sistema precisar da mesma String ele vai recuperar do pool Essa reutilização transparente do objeto reduzem overhead, mas só podem ser feitas quando eles são imutáveis Strings criadas a partir do new nunca usam o pool
  40. 40. Igualdades entre StringsO operador == checa se as variáveis apontam para o mesmo objeto, ele podeprovar quando a VM utiliza o pool e quando cria um objeto em uma área novaString s1 = "abc";String s2 = "abc";String s3 = new String("abc");String s4 = new String(new char[] {a, b, c});String s5 = new String(new char[] {a, b, c});String s6 = new String(s1);System.out.println(s1 == s2); // true - uso do poolSystem.out.println(s1 == s3); // false - uma do pool outra nãoSystem.out.println(s1 == s4); // false - idemSystem.out.println(s1 == s5); // false - idemSystem.out.println(s1 == s6); // false - idem, mesmo que uma seja argumento // do construtor da outraSystem.out.println(s4 == s5); // false - construídas da mesma forma, // mas fora do pool
  41. 41. Igualdades entre Strings Utilize o método equals() para checar a igualdade do teor interno das Strings Utilize equalsIgnoreCase() para checar a mesma igualdade desprezando diferenças de maiúsculos e minúsculos String s1 = "abc"; String s2 = "abc"; String s3 = new String("abc"); String s7 = s1.toUpperCase(); String s8 = "aBc"; System.out.println(s1.equals(s2)); // true, já eram o mesmo objeto System.out.println(s1.equals(s3)); // true, dois objetos de mesmo teor System.out.println(s1.equals(s7)); // false, caracteres diferentes System.out.println(s1.equalsIgnoreCase(s2)); // true óbvio System.out.println(s1.equalsIgnoreCase(s7)); // true System.out.println(s1.equalsIgnoreCase(s8)); // true
  42. 42. Operações com StringsO operador + concatena Strings, o método concat() também: String a = "existem 10 tipos de pessoas "; String b = "as que sabem e as que não sabem binários"; System.out.println(a + b); System.out.println(a.concat(b));Se a variável a estivesse nula, o método concat() daria uma exceção de RuntimeNullPointerException, mas o operador concateria b com a string null String a = null; String b = "teste"; System.out.println(a + b); // nullteste System.out.println(a.concat(b)); // NullPointerException
  43. 43. Operações com StringsMais comparações com strings startsWith(String) - true se a String iniciar com a String passada endsWith(String) - true se a String terminar com a String passada compareTo(String) - Método comumente chamado pelas árvores para classificar a ordem das strings retorna -1 se a string principal deve vir primeiro na ordem Unicode retorna 1 se a string principal deve vir depois na ordem Unicode retorna 0 se as strings são iguais (mais uma forma de checar igualdade) compareToIgnoreCase(String) - mesmo que o anterior mas sem fazer distinção entre maiúsculos e minúsculos
  44. 44. Operações com Stringslength() - recupera o tamanho da stringcharAt(int) - retorna o caractere da posição informadasubstring(int start) - retorna a string a partir de start até o finalsubstring(int start, int end) - retorna a string de start até end Levanta IndexOutOfBoundsException se end for maior que a string ou menor do que start e ainda se start for negativoindexOf(String) - posição da primeira ocorrência da string na principalindexOf(int) - posição da primeira ocorrência do caractere referente aonúmero informado na string principal Até o Java 5, o valor aqui era um char. A troca pra int se deve à possibilidade de buscar caracteres posteriores ao padrão Unicode 4.0indexOf(String, int pos) - só começa a procurar a partir de pos
  45. 45. Operações com StringslastIndexOf(String) - possui as mesmas sobrecargas de indexOf(), masprocura a última ocorrência em vez da primeirareplace(char antigo, char novo) - Troca todas as ocorrências de antigo pornovoreplace(CharSequence antigo, CharSequence novo) - Troca todas asocorrências de antigo que é uma String ou outro CharSequence por novo Os métodos replaceAll() e replaceFirst() têm a funcionalidades semelhantes, mas carregam o engenho de expressões regulares, assunto da prova OCP - Java Programmer IItoLowerCase() - String original toda em letras minúsculastoUpperCase() - String original toda em letras maiúsculas
  46. 46. Conversões números x Strings Classes wrappers possuem métodos estáticos que recuperam um valor numérico a partir de uma String int num1 = Integer.parseInt("123"); double num2 = Double.parseDouble("3.14"); A classe String possui método estático valueOf() que recupera strings a partir de números String s1 = String.valueOf(123); String s2 = String.valueOf(3.14); Operações entre números e strings geram novas strings concatenadas String resultado = 10 + "10"; // resultado "1010"
  47. 47. StringBufferStringBuffers são CharSequences mutáveis, ou seja, possuem métodos capazesde alterar a sequência de char que carregam internamenteStringBuffer sbuf1 = new StringBuffer();StringBuffer sbuf2 = new StringBuffer("abc");StringBuffer sbuf3 = new StringBuffer(sbuf2);StringBuffer sbuf4 = new StringBuffer(10); // tamanho original interna sbuf1.reverse(); // de trás pra frente, mas essa variável estava vaziasbuf2.append("def"); // insere def no finalsbuf3.insert(1, "def"); // insere def na posição 1sbuf4.delete(0, 1); // apaga o range de caracteres informado aquiSystem.out.println(sbuf1); // vaziaSystem.out.println(sbuf2); // abcdefSystem.out.println(sbuf3); // adefbcSystem.out.println(sbuf4); // vaziaSystem.out.println(sbuf4.length()); // 0
  48. 48. StringBuilderClasse inserida na API do Java 5Implementa a mesma funcionalidade da StringBuffer, mas não declara seusmétodos como synchronized (thread-safe) Threads não são assunto desta prova, mas é importante saber a diferença entre essas classesStringBuilder, apesar de eventualmente permitir falhas de isolamento emambientes concorrentes, é mais eficiente devido à melhor gestão de memória etempo de realização das operações
  49. 49. Objetivos cobertosUnderstanding how Java handles dataInvestigating the relationships between identifiers, the Java class, and memoryDefining the scope of the variablesInitializing identifiersBuilding expressions using operators and operandsWorking with stringsUnderstanding the difference between objects and primitive data types

×