certificação marco antonio. introdução a compreensão desse capítulo é muito importante pois...
TRANSCRIPT
![Page 1: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/1.jpg)
CertificaçãoMarco Antonio
![Page 2: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/2.jpg)
Introdução• A compreensão desse capítulo é muito importante
pois trata de um assunto essencial em qualquer linguagem de programação, as diversas formas de se atribuir e manipular valores de uma variável.
• Além de ser um dos elementos fundamentais de uma linguagem de programação, as variáveis tem um papel importante na geração de programas e suas peculiaridades serão abordadas nesse capítulo.
![Page 3: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/3.jpg)
Atribuição• A forma mais elementar de se atribuir um
valor a uma variável é:
int x = 0;
![Page 4: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/4.jpg)
Atribuições• byte x = 19; // ok
byte y = x; // okbyte z = x + y; // deveria aceitar, mas necessita de uma conversão explícita.
![Page 5: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/5.jpg)
Objetos• Button b = new Button(); • O que b armazena? • Um objeto do tipo Button? • b armazena um conjunto de bits usados para
acessar (referenciar) o objeto na memória. • Portanto, podemos dizer a rigor que b não é um
objeto do tipo Button e sim uma forma (através de uma sequência de bits) usada para acessar esse objeto na memória.
![Page 6: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/6.jpg)
Atribuição de primitivos• byte a = 19; byte a = (byte)19;
byte b = 128; // Não é possível sem uma conversão explícitabyte c = (byte)128; // Ok
![Page 7: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/7.jpg)
Atribuições• O valor 128 não pode ser atribuído à
variável b por ultrapassar a capacidade em bits do tipo byte - uma conversão se faz necessária.
• Mas devemos ressaltar um acontecimento muito interessante nesse caso. Qual o valor da variável c da atribuição anterior?
![Page 8: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/8.jpg)
Atribuição de objetosclass Carro { public double preco = 0; } class Audi extends Carro { } 1. public class Teste { 2. public static void main(String[] args) { 3. Carro a = new Carro(); 4. Audi b = new Audi(); 5. Carro c = new Audi(); 6. Audi d = new Carro(); 7. } 8. }
![Page 9: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/9.jpg)
Questão• Qual das linhas anteriores estão incorretas e
não permitiriam que o programa fosse compilado ?a) 1, 3b) 2, 3c) 5d) 6e) o código será compilado
![Page 10: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/10.jpg)
Passagem de valores primitivos• Existe muita discussão quando o assunto é
a forma como a Java passa um variável (primitiva ou referência) para um método.
• Quando uma variável é passada para um método, SEMPRE será passado um cópia dos seus bits!!
![Page 11: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/11.jpg)
Classespublic class Teste { public static void main(String[] args) { byte x = 10; System.out.println("X antes: "+x); altera(x); System.out.println("X depois: "+x); } public static void altera(byte a) { a = 2; } }
![Page 12: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/12.jpg)
Passando referências• Uma variável de referência nada mais é que
um repositório de bits que representam um forma de se acessar um objeto na memória.
• A variável é uma coisa o objeto que está na memória é outra.
![Page 13: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/13.jpg)
Classespublic class Teste { public static void main(String[] args) { Carro c = new Carro(); c.preco = 13990.00; System.out.println("preço antes: "+c.preco); anula(c); System.out.println("preço depois: "+c.preco); } public static void anula(Carro p) { p = null; } }
![Page 14: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/14.jpg)
Resultado• preço antes: 13990.0• preço depois: 13990.0 • A cópia da referência do objeto não se
altera.
![Page 15: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/15.jpg)
Classespublic class Teste { public static void main(String[] args) { Carro c = new Carro(); c.preco = 13990.00; System.out.println("preço antes: "+c.preco); aumento(c); System.out.println("preço depois: "+c.preco); } public static void aumento(Carro p) { p.preco = p.preco * 2; } }
![Page 16: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/16.jpg)
Resultado• preço antes: 13990.0 • Preço depois: ?• O valor alterado, mesmo na cópia da
referência, altera o valor do objeto principal.
![Page 17: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/17.jpg)
Operador Condicional • O operador condicional é um operador
ternário, ou seja, três operandos e deve ser usado quando se necessita realizar uma condição em uma única linha.
• Veja o código abaixo:int tamanho = 19;String texto = (tamanho>=10)?"Maior ou igual a 10":"Menor que 10";System.out.println(texto);
![Page 18: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/18.jpg)
Operador instanceof• Operador binário (dois operandos) que é
utilizado para saber se um objeto é instância de uma classe.
![Page 19: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/19.jpg)
Código• String nome = "kuesley";
if (nome instanceof String) {System.out.println("nome é do tipo String");} else {System.out.println("nome não é do tipo String");}
![Page 20: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/20.jpg)
Classepublic class Veiculo { } public class Audi extends Veiculo { } public class Teste { public static void main(String[] args) { Audi a = new Audi(); Veiculo v = new Veiculo(); if (a instanceof Audi) System.out.println("a é do tipo Audi"); if (v instanceof Veiculo) System.out.println("v é do tipo Veiculo"); if (v instanceof Audi) System.out.println("v é do tipo Audi"); if (a instanceof Veiculo) System.out.println("a é do tipo Veículo"); } }
![Page 21: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/21.jpg)
• a é do tipo Audi // a que é instância da classe Audi é membro de Audi
• v é do tipo Veiculo // v que é instância da classe Veiculo é membro de Veiculo
• a é do tipo Veiculo // a que é uma instância da classe Audi é membro de veículo, pois a classe Audi é uma sub-classe de Veiculo.
![Page 22: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/22.jpg)
Classespublic interface Acao { } public class Veiculo implements Acao { } public class Audi extends Veiculo { } public class Moto { } public class Teste { public static void main(String[] args) { Audi a = new Audi(); Veiculo v = new Veiculo(); Moto m = new Moto(); if (a instanceof Acao) System.out.println("a é membro de Acao"); if (v instanceof Acao) System.out.println("v é membro de Acao"); if (m instanceof Acao) System.out.println("m é membro de Acao"); } }
![Page 23: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/23.jpg)
Resultado• a é membro de Acao• v é membro de Acao
![Page 24: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/24.jpg)
Arrays• Um array de primitivos (1,2,3,4) é, antes de
qualquer coisa, um objeto.
![Page 25: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/25.jpg)
Arrayspublic class Teste { public static void main(String[] args) { boolean c = (new int[] { 1,2,3 } instanceof Object); System.out.println(c); } }
• Aqui temos um array anônimo, conforme visto anteriormente.
![Page 26: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/26.jpg)
Resultado• Qual o resultado do instanceof?
![Page 27: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/27.jpg)
Classes class Veiculo { } class Audi extends Veiculo { } public class Teste { public static void main(String[] args) { Audi a = new Audi(); Veiculo v = new Veiculo(); boolean b1 = (a instanceof Audi); // ok - b1 é true boolean b2 = (a instanceof Veiculo); // ok - b2 é true boolean b3 = (v instanceof Audi); // ok - b3 é false boolean b4 = (a instanceof String); // erro de compilação } }
![Page 28: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/28.jpg)
Sombreamento de variáveis• Uma área interessante da Java é a forma
como trata os sobreamentos de variáveis.• Pense em uma classe com um membro
inteiro chamado tamanho, imagine ainda que você crie um método e internamente você também crie um variável local chamada tamanho, o que acontecerá?
![Page 29: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/29.jpg)
Classes public class Teste { static int tamanho = 0; public static void main(String[] args) { tamanho = 9; System.out.println("Antes: "+tamanho); crescer(2); System.out.println("Depois: "+tamanho); } public static void crescer(int tamanho) { tamanho = tamanho + 1; } }
![Page 30: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/30.jpg)
Resultado• A variável tamanho dentro do escopo do
método que está sendo usada, não é a mesma declarada como membro da classe.
• Agora se alterarmos um pouco o código como segue teremos um resultado diferente:
![Page 31: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/31.jpg)
Classespublic class Teste { int tamanho = 0; public static void main(String[] args) { Teste t = new Teste(); t.tamanho = 9; System.out.println("Antes: "+t.tamanho); t.crescer(2); System.out.println("Depois: "+t.tamanho); } public void crescer(int tamanho) { this.tamanho = tamanho + 1; } }
![Page 32: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/32.jpg)
Observação• Você não pode colocar a palavra this no
método crescer, porque uma variável static nunca poderá ser referenciado por um contexto não-estático, e a palavra this quer dizer que é de um objeto.
![Page 33: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/33.jpg)
Operadores matemáticos• Uma observação que é importante ser
ressaltada é que toda operação envolvendo números inteiros resultarão em um tipo int, mesmo sendo byte * short, ou byte / int.
• Como você sabe, não é possível realizar divisão por zero para números inteiros, mas em número de pontos flutuantes isso é possível podendo retornar um 0 positivo ou um 0 negativo.
![Page 34: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/34.jpg)
Operadores • Unários: -- ++
Binários: + - / * %
int x = 10 + 10; int y = 10 / 0; // Uma exceção será lançada ! java.lang.ArithmeticException
![Page 35: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/35.jpg)
Divisão por zeropublic class Teste { public static void main(String[] args) { double sal = 140 / 0; System.out.println("Salario: "+sal); } }
![Page 36: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/36.jpg)
Atenção• Qual o resultado?• Anote a exceção.
![Page 37: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/37.jpg)
Classepublic class Teste { public static void main(String[] args) { double d = 140;double sal = d / 0; System.out.println("Salario: "+sal); } }
![Page 38: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/38.jpg)
Resultado• E agora, o que acontece?
![Page 39: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/39.jpg)
Classepublic class Teste { public static void main(String[] args) { double sal = -140.0 / 0; System.out.println("Salario: "+sal); } }
![Page 40: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/40.jpg)
Qual o resultado?• Viu as diferenças entre as classes?
![Page 41: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/41.jpg)
Classepublic class Teste { public static void main(String[] args) { double sal = -0.0 / 0; System.out.println("Salario: "+sal); } }
![Page 42: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/42.jpg)
E agora?• Resultado:
– Salario: NaN (atenha-se a saber o que resulta e não o porquê)
![Page 43: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/43.jpg)
Incremento e decremento• Atenção aos operadores unários.
![Page 44: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/44.jpg)
Pré-fixado• int x = 10;
System.out.println("x é "+(++x));
![Page 45: Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5706383f1a28abb8238f0b3d/html5/thumbnails/45.jpg)
Pós-fixado• int x = 9;
System.out.println("x vale: "+x--);System.out.println("o valor final de x é "+x);