4.1 Introduo 87
4.2 Algoritmos 87
4.3 Pseudocdigo 87
4.4 Estruturas de controle 88
4.5 A instruo de uma nica seleo if 89
4.6 A instruo de seleo dupla ifelse 90
4.7 A instruo de repetio while 93
4.8 Formulando algoritmos: repetio controlada por contador 94
4.9 Formulando algoritmos: repetio controlada por sentinela 98
4.10 Formulando algoritmos: instrues de controle aninhadas 104
4.11 Operadores de atribuio compostos 108
4.12 Operadores de incremento e decremento 108
4.13 Tipos primitivos 110
4.14 (Opcional) Estudo de caso de GUIs e imagens grficas: Criando desenhos simples 111
4.15 (Opcional) Estudo de caso de engenharia de software: Identificando atributos de classe
114
4.16 Concluso 117
7 Arrays 203
15 Recurso 551
15.1 Introduo 552
15.2 Conceitos de recurso 553
15.3 Exemplo que utiliza recurso: Fatoriais 553
15.4 Exemplo que utiliza recurso: Srie de Fibonacci 555
15.5 Recurso e a pilha de chamadas do mtodo 557
15.6 Recurso versus iterao 558
15.7 Permutaes de string 560
15.8 Torres de Hani 563
15.9 Fractais 565
15.10 Retorno recursivo 574
15.11 Concluso 574
15.12 Internet e recursos Web 575
18 Genricos 645
18.1 Introduo 646
18.2 Motivao para mtodos genricos 646
18.3 Mtodos genricos: implementao e traduo em tempo de compilao 648
18.4 Questes adicionais da traduo em tempo de compilao: mtodos que utilizam um
parmetro de tipo como o tipo
de retorno 650
18.5 Sobrecarregando mtodos genricos 653
18.6 Classes genricas 653
18.7 Tipos brutos 661
18.8 Curingas em mtodos que aceitam parmetros de tipo 662
18.9 Genricos e herana: notas 668
18.10 Concluso 668
18.11 Internet e recursos da Web 668
19 Colees 672
19.1 Introduo 673
19.2 Viso geral das colees 673
19.3 Classe Arrays 674
Sumrio XI
19.4 Interface Collection e classe Collections 676
19.5 Listas 677
19.6 Algoritmos de colees 686
19.7 Classe Stack do pacote java.util 697
19.8 Classe PriorityQueue e Interface Queue 699
19.9 Conjuntos 700
19.10 Mapas 703
19.11 Classe Properties 706
19.12 Colees sincronizadas 709
19.13 Colees no-modificveis 709
19.14 Implementaes abstratas 709
19.15 Concluso 710
23 Multithreading 786
23.1 Introduo 787
23.2 Estados de thread: Classe Thread 788
23.3 Prioridades de thread e agendamento de thread 789
23.4 Criando e executando threads 791
23.5 Sincronizao de thread 793
23.6 Relacionamento entre produtor e consumidor sem sincronizao 795
23.7 Relacionamento entre produtor e consumidor com sincronizao 800
23.8 Relacionamento de produtor/consumidor: Buffer circular 805
23.9 Relacionamento de produtor/consumidor: ArrayBlockingQueue 811
23.10 Multithreading com GUI 813
23.11 Outras classes e interfaces em java.util.concurrent 818
23.12 Monitores e bloqueios de monitor 818
23.13 Concluso 823
24 Redes 827
24.1 Introduo 828
24.2 Manipulando URLs 829
24.3 Lendo um arquivo em um servidor Web 833
24.4 Estabelecendo um servidor simples utilizando sockets de fluxo 836
24.5 Estabelecendo um cliente simples utilizando sockets de fluxo 837
24.6 Interao cliente/servidor com conexes de socket de fluxo 837
24.7 Interao cliente/servidor sem conexo com datagramas 848
24.8 Jogo-da-velha cliente/servidor que utiliza um servidor com multithread 854
24.9 Segurana e redes 867
24.10 Estudo de caso: Servidor e cliente DeitelMessenger 867
24.11 Concluso 888
26 Servlets 928
26.1 Introduo 929
26.2 Viso geral e arquitetura de servlets 930
26.3 Configurando o servidor Apache Tomcat 933
26.4 Tratando solicitaes get de HTTP 935
26.5 Tratando solicitaes get de HTTP contendo dados 941
26.6 Tratando solicitaes post de HTTP 943
26.7 Redirecionando solicitaes para outros recursos 946
26.8 Aplicativos de mltiplas camadas: utilizando JDBC a partir de um servlet 949
26.9 Arquivos welcome 952
26.10 Concluso 955
26.11 Internet e recursos Web 955