Introdução à Linguagem Java

Propaganda
Introdução à Linguagem Java
1
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
2
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
Nuno Flores, FEUP, Fevereiro 2009
Introdução à Linguagem Java
3
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
4
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
Nuno Flores, FEUP, Fevereiro 2009
Introdução à Linguagem Java
5
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
6
inner class (non static nested class)
Como SaldoInsuficiente não é
static, cada instância está ligada
a uma instância de Conta
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
Nuno Flores, FEUP, Fevereiro 2009
Introdução à Linguagem Java
7
Saldo insuficiente: 0.0 < 1.0
Conta$SaldoInsuficiente: Saldo insuficiente: 0.0 < 1.0
at Conta.levantar(Conta.java:7)
at TestConta.main(TestConta.java:6)
finalmente...
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
8
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
Nuno Flores, FEUP, Fevereiro 2009
Introdução à Linguagem Java
9
Ver mais métodos
na Java API
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
10
stack
x
boxing
unboxing
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
Nuno Flores, FEUP, Fevereiro 2009
y
z
heap
Introdução à Linguagem Java
11
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
12
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
Nuno Flores, FEUP, Fevereiro 2009
Introdução à Linguagem Java
13
public class Pair <T> {
Parâmetro formal
private final T first, second;
public Pair(T first, T second) {
this.first = first;
this.second = second;
}
public T getFirst()
{ return first;
}
public T getSecond() { return second; }
public String toString() {
return "(" + first + ", " + second + ")";
}
}
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
14
public class TestPair {
Auto-boxing
public static void main(String[] args) {
Pair<Integer> p1 = new Pair<Integer>(1, 10);
Pair<String> p2=new Pair<String>("Ana","Tó");
System.out.println(p1);
System.out.println(p2);
int n = p1.getFirst();
String s = p2.getFirst();
// ...
}
}
(1, 10)
(Ana, Tó)
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
Nuno Flores, FEUP, Fevereiro 2009
Parâmetro actual
Usa toString
Auto-unboxing
Introdução à Linguagem Java
15
public class Pair {
private final Object first, second;
public Pair(Object first, Object second) {
this.first = first;
this.second = second;
}
public Object getFirst()
{ return first;
}
public Object getSecond() { return second; }
public String toString() {
return "(" + first + ", " + second + ")";
}
}
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
16
public class TestPair {
public static void main(String[] args) {
Pair p1 = new Pair(1, 10);
Pair p2 = new Pair("Ana", "Tó");
System.out.println(p1);
System.out.println(p2);
int n = (Integer)p1.getFirst();
String s = (String)p2.getFirst();
// ...
}
}
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
Nuno Flores, FEUP, Fevereiro 2009
Introdução à Linguagem Java
17
Parâmetro formal
public class TestGenericMethods {
public static <T> int countNull(T[] a) {
int n = 0;
for (T x : a)
if (x == null)
T determinado com base
n++;
nos tipos dos argumentos
return n;
}
public static void main(String[] args) {
Integer[] a1 = {null, 1, 2};
String[] a2 = {"Ana", "Maria", null};
System.out.println(countNull(a1));
System.out.println(countNull(a2));
1
}
1
}
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
18
O tipo T tem de implementar a interface Comparable<T>
(interface do Java que contém apenas o método int compareTo(T o))
public static <T extends Comparable<T>>
void insertionSort(T[] a) {
for(int i = 1; i < a.length; i++) {
T x = a[i];
int j = i;
for( ; j > 0 && a[j-1].compareTo(x) > 0; j--)
a[j] = a[j-1];
a[j] = x;
}
Em Java não há apontadores para função, tem de se
}
passar um objecto que implementa o método pretendido!
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
Nuno Flores, FEUP, Fevereiro 2009
Introdução à Linguagem Java
19
public class Person implements Comparable<Person> {
private String name;
public Person(String name) {
this.name=name;
}
public int compareTo(Person p) {
return this.name.compareTo(p.name);
}
public String toString() {
return name;
}
public static void main(String args[]) {
Person[] a={new Person("Tó"),new Person("Ana")};
ArrayUtils.insertionSort(a);
System.out.println(java.util.Arrays.toString(a));
}
[Ana, Tó]
}
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
20
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
Nuno Flores, FEUP, Fevereiro 2009
Introdução à Linguagem Java
21
Introdução à linguagem Java, Nuno Flores, FEUP, MIEIC, CAL, Fevereiro de 2010
Nuno Flores, FEUP, Fevereiro 2009
Download