Prof. Rodrigo Noll @ IFRS Canoas
//É recomendável abstrair a lista a partir da interface List:
List <ContaCorrente> contas = new ArrayList<>();
contas.add(c1);
contas.add(c3);
contas.add(c2);
for(int i = 0; i < contas.size(); i++) {
ContaCorrente cc = contas.get(i); // sem casting!
System.out.println(cc.getSaldo());
}
for(Conta conta: contas) { //foreach
System.out.println(conta.getSaldo());
}
List<String> myList =
Arrays.asList("a1", "a2", "b1", "c2", "c1");
myList
.stream()
.filter(s -> s.startsWith("c"))
.map(String::toUpperCase)
.sorted()
.forEach(System.out::println);
// C1
// C2
public static void main(String[] args) {
Set<String> cargos = new HashSet<>();
cargos.add("Gerente");
cargos.add("Diretor");
cargos.add("Presidente");
cargos.add("Secretária");
cargos.add("Funcionário");
cargos.add("Diretor"); // repetido, retorna false e não insere
// imprime na tela todos os elementos
System.out.println(cargos);
if (cargos.contains("Secretária"))
System.out.println("Cargo contém Secretária");
}
import java.util.*;
import java.util.stream.*;
public class BuscaDuplicadas {
public static void main(String[] args) {
Set<String> palavrasDistintas = Arrays.asList(args).stream()
.collect(Collectors.toSet());
System.out.println(palavrasDistintas.size()
+ " palavras distintas: " + palavrasDistintas);
}
}
public static void main(String[] args) {
ContaCorrente c1 = new ContaCorrente();
c1.deposita(10000);
ContaCorrente c2 = new ContaCorrente();
c2.deposita(3000);
// cria o mapa
Map<String, ContaCorrente> mapaDeContas = new HashMap<>();
// adiciona duas chaves e seus respectivos valores
mapaDeContas.put("diretor", c1);
mapaDeContas.put("gerente", c2);
ContaCorrente contaDoDiretor = mapaDeContas.get("diretor");
System.out.println(contaDoDiretor.getSaldo());
}
Map<Integer, String> map = pessoas
.stream()
.collect(Collectors.toMap(
p -> p.idade,
p -> p.nome,
(nome1, nome2) -> nome1 + ";" + nome2));
System.out.println(map);
// {18=Rodrigo, 23=Peter;Pamela, 12=David}
...
public class ContaBancaria {
public void saca (double valor){
if (valor > saldo) {
IllegalArgumentException exception = new
IllegalArgumentException(“O valor ultrapassa o saldo !”);
throw exception;
}
saldo = saldo – valor;
}
...
}
...
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ExemploExcecao {
public static void main(String[] args) {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("Quantos anos voce tem ?");
String inputLine = in.readLine();
int idade = Integer.parseInt(inputLine);
idade++;
System.out.println("No proximo ano voce tera: " + idade);
} catch (IOException exception) {
System.out.println("Erro de I/O: " + exception);
}
}
}
package br.edu.ifrs.canoas.java.aula15;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ExemploExcecao2 {
public static void main(String[] args) {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("Quantos anos voce tem ?");
String inputLine = in.readLine();
int idade = Integer.parseInt(inputLine);
idade++;
System.out.println("No proximo ano voce tera: " + idade);
} catch (IOException exception) {
System.out.println("Erro de I/O: " + exception);
} catch (NumberFormatException exception) {
System.out.println("A entrada nao eh um numero ! ");
}
}
}
pimport java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ExemploExcecao3 {
public static void main(String[] args) {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("Quantos anos voce tem ?");
String inputLine = in.readLine();
int idade = Integer.parseInt(inputLine);
idade++;
System.out.println("No proximo ano voce tera: " + idade);
} catch (IOException exception) {
System.out.println("Erro de I/O: " + exception);
} catch (NumberFormatException exception) {
exception.printStackTrace();
System.exit(1);
}
}
}
package br.edu.ifrs.canoas.java.aula15;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ExemploExcecao4 {
public static void main(String[] args) {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("Quantos anos voce tem ?");
String inputLine = in.readLine();
int idade = Integer.parseInt(inputLine);
idade++;
System.out.println("No proximo ano voce tera: " + idade);
} catch (Exception exception) {
// detonamos as excecoes
// na verdade elas nao foram tratadas
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ExemploExcecao5 {
public static void main(String[] args) {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("Quantos anos voce tem ?");
String inputLine = in.readLine();
int idade = Integer.parseInt(inputLine);
idade++;
System.out.println("No proximo ano voce tera: " + idade);
} catch (IOException exception) {
System.out.println("Erro de I/O: " + exception);
} catch (NumberFormatException exception) {
System.out.println("A entrada nao eh um numero ! ");
} finally {
System.out.println("Eh sempre executado independentemente de ocorrer
uma excecao ! ");
}
}
}
...
public class Conta {
public void saca (Double valor){
if (valor > saldo) {
throw new InsufficientFundsException(
“Saque de ” + valor + “ excede o saldo de ” + saldo);
}
saldo = saldo – valor;
}
...
}
...
public class InsufficientFundsException extends RuntimeException {
public InsufficientFundsException(){
}
public InsufficientFundsException(String reason){
super(reason);
}
}
// Define um literal para uma variável String
String nome = "Rodrigo";
// Executando um método que pega o primeiro
// caractere da string "Rodrigo"
char primeiro = "Rodrigo".charAt(0);
// Executando um método na variável
char primeiro = nome.charAt(0);
IMUTABILIDADE:
String word = “java";
char ch = Character.toUpperCase(word.charAt (0));
word = ch + word.substring (1);
String word1 = "";
String word2 = new String();
String word1; //não inicializada
private String errorMsg;
String empty = new String();
String empty = ""; //nada entre as aspas
char[] palavra = {‘J’, ‘a’, ‘v’, ‘a’};
String word = new String(palavra);//”Java”
"Trabalho".length(); // retorna 8
"IFRS".charAt(2); // retorna 'R'
String word1 = "re", word2 = "think", word3 = "ing";
int num = 2;
String result = word1 + word2;
//concatena word1 e word2 "rethink"
String result = word1.concat (word2);
// o mesmo que word1 + word2 "rethink"
result += word3;
// concatena word3 à result "rethinking"
result += num;
//converte num para String e concatena à result "rethinking2"
b = "Teste".equals("Teste");//true
b = "Teste".equals("teste");//false
b = "Teste".equalsIgnoreCase("teste");//true
if("teste".equalsIgnoreCase(team))
System.out.println(“Este é um “ + team);
String word1 = "HeLLo";
String word2 = word1.toUpperCase();//”HELLO”
String word3 = word1.toLowerCase();//”hello”
//word1 ainda é “HeLLo“
String word1 = " Oi Bob ";
String word2 = word1.trim();
//word2 é "Oi Bob" – sem espaços no início ou no final, não remove espaços do meio
//word1 ainda é " Oi Bob " – com espaços
//String word2 = word1.replace(oldCh, newCh);
//retorna uma nova string formada de word1 substituindo todas as ocorrências de oldCh por newCh
String word1 = "raro";
String word2 = "raro".replace('r', 'd');
//word2 é "dado", mas word1 ainda é "raro"
//3 maneiras para converter:
//String s = “” + num
s = “” + 123;//”123”
//String s = Integer.toString (i)
//String s = Double.toString (d)
s = Integer.toString(123);//”123”
s = Double.toString(3.14); //”3.14”
//String s = String.valueOf(num)
s = String.valueOf(123);//”123”
Tipo Primitivo | Classe Wrapper |
---|---|
boolean | Boolean |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
public class WrapperTest {
public static void main(String[] args) {
// criando um objeto Integer a partir de um int
int i1 = 1; //int --> Integer
Integer objInt1 = new Integer(i1);
// criando um int a partir de um objeto Integer
int i2 = objInt1.intValue(); //Integer --> int
...
Integer num1 = new Integer(10);
Integer num2 = new Integer(10);
// testando valores
if (num1.equals(num2) == true)
System.out.println("Valores sao iguais !");
else
System.out.println("Valores sao diferentes !");
// testando referencias
if(num1==num2)
System.out.println("As referencias sao iguais !");
else
System.out.println("As referencias sao diferentes !");
//Valores sao iguais !
//As referencias sao diferentes !
Integer i1 = 1000;
Integer i2 = 1000;
if(i1 != i2)
System.out.println("objetos diferentes");
if(i1.equals(i2))
System.out.println("mesmo significado");
//objetos diferentes
//mesmo significado
Os pacotes estão diretamente relacionados com os diretórios e costumam agrupar classes de funcionalidades similares ou relacionadas.
O padrão da Sun para nomear aos pacotes é relativo ao nome da empresa que desenvolveu a classe:
Os pacotes só possuem letras minúsculas, não importa quantas palavras estejam contidas nele.
Referência Oracle: https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html