Java 8
Java 8
Curso
Programação Orientada a
Objetos com Java
Capítulo: Apresentação da linguagem Java
http://educandoweb.com.br
Prof. Dr. Nelio Alves
Ficou Otimo
Objetivos
• Contextualizar Java
• Conhecer sintaxe e recursos básicos da linguagem Java
• Estrutura de uma aplicação Java
• Tipos básicos
• Entrada e saída
• Operadores
• Estruturas de controle
• Aprender a utilização básica do Eclipse
Java - contextualização
http://educandoweb.com.br
Prof. Dr. Nelio Alves
Java
O que é Java?
• Linguagem de programação (regras sintáticas)
Histórico
• Problemas resolvidos e motivo de seu sucesso:
• Ponteiros / gerenciamento de memória
• Portabilidade falha: reescrever parte do código ao mudar
de SO
• Utilização em dispositivos diversos
• Custo
Aspectos notáveis
• Código compilado para bytecode e
executado em máquina virtual (JVM)
• Portável, segura, robusta
• Roda em vários tipos de dispositivos
• Domina o mercado corporativo desde
o fim do século 20
• Padrão Android por muitos anos
Edições
• Java ME - Java Micro Edition - dispositivos embarcados e móveis - IoT
• http://www.oracle.com/technetwork/java/javame
https://en.wikipedia.org/wiki/Ja
Plataforma Java SE
• Bibliotecas - API specification
• https://docs.oracle.com/javase/8/docs/api/
• https://docs.oracle.com/javase/10/docs/api/
• http://www.oracle.com/technetwork/java/javase/downloads
• JRE - Java Runtime Environment
• Necessário para usuários finais executarem aplicações Java no computador
• Server JRE
• Necessário para executar sistemas Java em servidores
#include <iostream>
int main() {
double x, y, average;
compilador 1
compilador 3
compilador 2
package course;
import java.util.Scanner;
Java Virtual Machine (JVM)
public class Program {
public static void main(String[] args) { "platform agnostic"
Scanner sc = new Scanner(System.in); compilador
double x, y, average;
System.out.print("Enter first number: ");
Bytecode
x = sc.nextInt();
System.out.print("Enter second number: ");
y = sc.nextInt();
average = (x + y) / 2.0;
System.out.printf("Average = %.2f%n", average);
sc.close();
}
}
Compilação just-in-time
Máquina Virtual Java
(JIT)
JVM
Mais rápido que a
interpretação
Código de máquina
Class
Class
Class
Class Class
Class
Class Class
Entities Services
Class Class
Class
Class
Class Repositories
Class
Módulo (Java 9+) = Agrupamento lógico de pacotes relacionados
Runtime = Agrupamento físico
Financial Graphics
Class Class
Checklist
• Certifique-se de que seu Windows esteja devidamente licenciado e atualizado
• Windows update
Checklist
• Window -> Perspective -> Open Perspective -> Java
• File -> New -> Java Project
• Package Explorer
• JRE System Library
• Pasta "src"
• Criar classe
• Botão direito no projeto -> New -> Class
• Escolher um nome para a classe (iniciar com letra Maiúscula)
• Escolher um nome para o pacote (iniciar com letra Minúscula)
• Selecionar public static void main
• Classe
• package
• Cláusula import: referências a outros pacotes
• Classe
• Método
• public static void main(String[] args)
• Executar o programa: Botão direito no arquivo -> Run As -> Java Application
• Como fechar e reabrir o projeto? E o workspace?
• Dica: indentação automática: CTRL + SHIFT -> F
Trabalhando sem IDE
http://educandoweb.com.br
Prof. Dr. Nelio Alves
Passos
• Crie a estrutura do projeto
• javac course/*.java
• java course/Program
Checklist
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
String e Object
Tipo Descrição
String Uma cadeia de caracteres Unicode
IMUTÁVEL (segurança, simplicidade, thread safe)
Object Um objeto genérico (toda classe em Java é subclasse de object)
getClass
equals
hashCode
toString
boolean completed = false;
char gender = 'F';
Demo char letter = '\u0041';
byte n1 = 126;
int n2 = 1000;
int n3 = 2147483647;
long n4 = 2147483648L;
float n5 = 4.5f;
double n6 = 4.5;
String name = "Maria Green";
Object obj1 = "Alex Brown";
Object obj2 = 4.5f;
System.out.println(completed);
System.out.println(gender);
System.out.println(letter);
System.out.println(n1);
System.out.println(n2);
System.out.println(n3);
System.out.println(n4);
System.out.println(n5);
System.out.println(n6);
System.out.println(name);
System.out.println(obj1);
System.out.println(obj2);
Valores padrão
Memória Memória
0x100358:
30 0x100358
"Maria"
x s
Errado: Correto:
Convenções
• Camel Case: lastName
• pacotes
• atributos
• métodos
• variáveis e parâmetros
Exemplo 1
double a;
float b;
a = 5.0;
b = (float)a;
System.out.println(b);
Exemplo 2
double a;
int b;
a = 5.0;
b = (int)a;
System.out.println(b);
Exemplo 3
int a, b;
double result;
a = 5;
b = 2;
result = (double) a / b;
System.out.println(result);
Saída de dados em Java
http://educandoweb.com.br
Prof. Dr. Nelio Alves
System.out.print("Good morning!");
System.out.println("Good afternoon!");
System.out.println("Good night!");
System.out.println("---------------------------");
System.out.println(balance);
System.out.printf("%.2f%n", balance);
System.out.printf("%.4f%n", balance);
Locale.setDefault(Locale.US);
System.out.printf("%.4f%n", balance);
System.out.println("---------------------------");
System.out.printf("%s is %d years old, gender %c, and got balance = %.2f bitcoins%n", name, age,
gender, balance);
Exercício de fixação
Em um novo programa, inicie as Em seguida, usando os valores das variáveis, produza a
seguintes variáveis: seguinte saída na tela do console:
String product1 = "Computer"; Products:
String product2 = "Office desk"; Computer, which price is $ 2100,00
Office desk, which price is $ 650,50
int age = 30;
int code = 5290;
char gender = 'F'; Record: 30 years old, code 5290 and gender: F
import java.util.Locale;
System.out.println("Products:");
System.out.printf("%s, which price is $ %.2f%n", product1, price1);
System.out.printf("%s, which price is $ %.2f%n", product2, price2);
System.out.println();
System.out.printf("Record: %d years old, code %d and gender: %c%n", age, code, gender);
System.out.println();
System.out.printf("Measue with eight decimal places: %.8f%n", measure);
System.out.printf("Rouded (three decimal places): %.3f%n", measure);
Locale.setDefault(Locale.US);
System.out.printf("US decimal point: %.3f%n", measure);
}
}
Operadores aritméticos
http://educandoweb.com.br
Prof. Dr. Nelio Alves
Operadores aritméticos
17 3
2 5
Demo
int n1 = 3 + 4 * 2;
int n2 = (3 + 4) * 2;
− + −4
int n3 = 17 % 3; 2
double n4 = 10.0 / 8.0;
System.out.println(n1);
System.out.println(n2);
System.out.println(n3);
System.out.println(n4);
System.out.println(x1);
Operadores de atribuição
http://educandoweb.com.br
Prof. Dr. Nelio Alves
Operadores de atribuição
Operador Exemplo Significado
= a = 10; a RECEBE 10
+= a += 2; a RECEBE a + 2;
-= a -= 2; a RECEBE a - 2;
*= a *= 2; a RECEBE a * 2;
/= a /= 2; a RECEBE a / 2;
%= a %= 3; a RECEBE a % 3;
Demo
double n1 = 10;
double n2 = 30;
String s = "ABC";
System.out.println(n1);
System.out.println(n2);
System.out.println(s);
System.out.println("-------------");
n1 *= 2;
n2 += n1;
s += "DEF";
System.out.println(n1);
System.out.println(n2);
System.out.println(s);
Operadores comparativos
Operador Significado
> maior
< menor
>= maior ou igual
<= menor ou igual
== igual
!= diferente
Demo
int a = 10;
boolean c1 = a < 10;
boolean c2 = a < 20;
boolean c3 = a > 10;
boolean c4 = a > 5;
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println("------------");
Operadores lógicos
http://educandoweb.com.br
Prof. Dr. Nelio Alves
Operadores lógicos
Demo
boolean c1 = 2 > 3 || 4 != 5; // true
boolean c2 = !(2>3) && 4 != 5; // true
System.out.println(c1);
System.out.println(c2);
System.out.println("--------------");
Operadores bitwise
Operador Significado
& Operação "E" bit a bit
| Operação "OU" bit a bit
^ Operação "OU-exclusivo" bit a bit
C1 C2 C1 E C2 C1 C2 C1 OU C2 C1 C2 C1 XOR C2
F F F F F F F F F
F V F F V V F V V
V F F V F V V F V
V V V V V V V V F
Demo
&: 0001 1000 (24)
(89) 0101 1001
|: 0111 1101 (125)
(60) 0011 1100 ^: 0110 0101 (101)
int n1 = 89;
int n2 = 60;
System.out.println(n1 & n2);
System.out.println(n1 | n2);
System.out.println(n1 ^ n2);
import java.util.Scanner;
sc.close();
}
}
Console:
Console:
Checklist 35
Bob Brown
F
• Ler um número inteiro b5
4.32
• Ler um texto até a quebra de linha
Maria F 23 1.68
• Ler um caractere
• Ler um código composto de uma letra e um Memory:
dígito (exemplo: "a3"). Armazenar os valores
um uma variável tipo char e outra tipo int,
respectivamente. 35 'F' 'b' 5
n1 gender letter digit
• Ler um número double
Bob Brown 4.32
• Ler um nome (única palavra), sexo (caractere
F ou M), idade (inteiro) e altura (double) na name n2
mesma linha, armazenando-os em quatro
variáveis com os devidos tipos "Maria" 'F' 23 1.68
name2 ch age height
Limpeza de stream de entrada (flush)
DETALHE IMPORTANTE:
Operação substring
String s = "abcdefgh";
System.out.println(sub1);
System.out.println(sub2);
SAÍDA:
defgh
de
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
// 35
int n1 = sc.nextInt();
// Bob Brown
sc.nextLine();
String name = sc.nextLine();
// F
char gender = sc.next().charAt(0);
// b5
String s = sc.next();
char letter = s.charAt(0);
int digit = Integer.parseInt(s.substring(1));
// 4.32
double n2 = sc.nextDouble();
// Maria F 23 1.68
String name2 = sc.next();
char ch = sc.next().charAt(0);
int age = sc.nextInt();
double height = sc.nextDouble();
System.out.println(n1);
System.out.println(name);
System.out.println(gender);
System.out.println(letter);
System.out.println(digit);
System.out.println(n2);
System.out.println(name2);
System.out.println(ch);
System.out.println(age);
System.out.println(height);
sc.close();
Exercício de fixação
Fazer um programa para executar o seguinte procedimento SAÍDA ESPERADA (NÚMEROS REAIS
de entrada de dados, e depois mostrar os dados na tela:
COM DUAS CASAS DECIMAIS):
Enter your full name:
Alex Green Alex Green
How many bedrooms are there in your house? 3
3 500.50
Enter product price: Green
500.50 21
Enter your last name, age and height (same line): 1.73
Green 21 1.73
import java.util.Locale;
import java.util.Scanner;
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
System.out.println(fullName);
System.out.println(bedrooms);
System.out.printf("%.2f%n", price);
System.out.println(lastName);
System.out.println(age);
System.out.printf("%.2f%n", height);
sc.close();
}
}
0 "potato"
1 "apple"
2 "lemon"
"potato apple lemon" vect
s
Estruturas condicionais
http://educandoweb.com.br
Prof. Dr. Nelio Alves
if-else
Simples Composta Encadeamentos
if ( condição ) { if ( condição ) { if ( condição 1 ) {
comando 1 comando 1 comando 1
comando 2 comando 2 comando 2
} } }
else { else if ( condição 2 ) {
comando 3 comando 3
comando 4 comando 4
} }
else if ( condição 3 ) {
comando 5
comando 6
}
else {
Nota: se o bloco de comandos possuir apenas comando 7
um comando, as chaves são opcionais. comando 8
}
Demo #1
Exercício de fixação
Fazer um programa para ler três números inteiros na mesma linha, separados por espaço em branco.
Em seguida, mostrar na tela qual é o maior dos números lidos. Se houver empate, mostrar apenas um.
Exemplos:
Entrada Saída
4 10 7 Higher = 10
Entrada Saída
7 3 7 Higher = 7
Entrada Saída
9 9 9 Higher = 9
import java.util.Locale;
import java.util.Scanner;
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
if (a > b && a > c) {
System.out.println("Higher = " + a);
}
else if (b > c) {
System.out.println("Higher = " + b);
}
else {
System.out.println("Higher = " + c);
}
sc.close();
}
}
Sintaxe:
var minhaVariavel = (...);
switch (minhaVariavel) {
case 1:
System.out.println("Caso 1");
break;
case 2:
System.out.println("Caso 2");
break;
default:
System.out.println("Caso padrão");
}
if (x == 1) { switch (x) {
day = "Sunday"; case 1:
} day = "Sunday";
else if (x == 2) { break;
day = "Monday"; case 2:
} day = "Monday";
else if (x == 3) { break;
day = "Tuesday"; case 3:
} day = "Tuesday";
else if (x == 4) { break;
day = "Wednesday"; case 4:
} day = "Wednesday";
else if (x == 5) { break;
day = "Thursday"; case 5:
} day = "Thursday";
else if (x == 6) { break;
day = "Friday"; case 6:
} day = "Friday";
else if (x == 7) { break;
day = "Saturday"; case 7:
} day = "Saturday";
else { break;
day = "Invalid value"; default:
} day = "Invalid value";
}
System.out.println("Day: " + day);
System.out.println("Day: " + day);
Expressão condicional ternária
http://educandoweb.com.br
Prof. Dr. Nelio Alves
Sintaxe:
( condição ) ? valor_se_verdadeiro : valor_se_falso
Exemplos:
( 2 > 4 ) ? 50 : 80 80
Escopo e inicialização
http://educandoweb.com.br
Prof. Dr. Nelio Alves
Checklist
• Escopo de uma variável: é a região do programa onde a variável é
válida, ou seja, onde ela pode ser referenciada.
Demo
double price = sc.nextDouble();
System.out.println(discount);
Comentários em Java (básico)
http://educandoweb.com.br
Prof. Dr. Nelio Alves
package course;
import java.util.Locale;
import java.util.Scanner;
/*
Este programa calcula as raízes de uma equação do segundo grau
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
double a, b, c, delta;
Funções
• Representam um processamento que possui um significado
• Math.sqrt(double)
• System.out.println(string)
Exemplo:
package course;
import java.util.Scanner;
sc.close();
}
}
package course;
import java.util.Scanner;
showResult(higher);
sc.close();
}
• Perspectiva Debug
• Aba importante: Variables
Regra: Regra:
Enter a number: 25
5.000
Enter another number: 10
3.162
Enter another number: 9
3.000
Enter another number: -4
Negative number
Problema exemplo
Digitar um número N e depois N valores inteiros. Mostrar a soma dos N
valores digitados.
import java.util.Scanner;
int sum = 0;
for (int i = 1; i <= n; i++) {
System.out.print("Value #" + i + ": ");
int x = sc.nextInt();
sum += x;
}
sc.close();
}
}
Exemplo:
Enter N: 0
N must be positive! Try again: -2
N must be positive! Try again: 4
Value #1: 5
Value #2: 4
Value #3: 10
Value #4: 2
Higher = 10
Dica
Integer.MIN_VALUE
Integer.MAX_VALUE
package course;
import java.util.Scanner;
System.out.print("Enter N: ");
int n = sc.nextInt();
while (n <= 0) {
System.out.print("N must be positive! Try again: ");
n = sc.nextInt();
}
do { Regra:
comando 1
comando 2
} while ( condição ); V: volta
F: pula fora
Problema exemplo
Digitar um número e mostrar sua raiz quadrada, depois perguntar ao
usuário se ele deseja repetir o procedimento (y/n). Caso ele responda
'y', repetir o procedimento.
Enter a number: 9
Square root = 3.000
Repeat (y/n)? y
Enter a number: 10
Square root = 3.162
Repeat (y/n)? n
package course;
import java.util.Locale;
import java.util.Scanner;
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
char resp;
do {
System.out.print("Enter a number: ");
double n = sc.nextDouble();
double sq = Math.sqrt(n);
System.out.printf("Square root = %.3f%n", sq);
sc.close();
}
}
Exercícios de reforço
http://educandoweb.com.br
Prof. Dr. Nelio Alves
1) Deseja-se fazer um programa para calcular a nota final de um estudante, considerando as
três notas que ele tirou nos três trimestres de seu curso. Caso a nota final do estudante seja
menor que 60.00, deve-se mostrar uma mensagem "FAILED" também.
Exemplos:
package course;
import java.util.Locale;
import java.util.Scanner;
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
sc.close();
}
}
2) Fazer um programa para ler a quantidade Classificação Glucose
de glicose no sangue de uma pessoa e depois Normal glucose <= 100
mostrar na tela a classificação desta glicose de High 100 < glusose <= 140
acordo com a tabela de referência ao lado. Diabetes glucose > 140
Exemplos:
package course;
import java.util.Locale;
import java.util.Scanner;
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
sc.close();
}
}
3) Fazer um programa para ler dois números inteiros e mostrar a soma de todos os números
ímpares entre eles, inclusive eles próprios.
Exemplos:
package course;
import java.util.Scanner;
if (y < x) {
begin = y;
end = x;
}
int sum = 0;
for (int i = begin; i <= end; i++) {
if (i % 2 != 0) {
sum += i;
}
}
sc.close();
}
}
4) Leia números inteiros até que um 0 (zero) seja lido. Para cada valor lido, o programa deve
mostrar o quadrado do valor.
Exemplo 1:
Enter an integer value: 4
16
Enter an integer value: 1
1
Enter an integer value: 10
100
Enter an integer value: 0
Exemplo 2:
Enter an integer value: 0
package course;
import java.util.Scanner;
while (n != 0) {
int square = n * n;
System.out.println(square);
System.out.print("Enter an integer value: ");
n = sc.nextInt();
}
sc.close();
}
}
5) O curso de Computação Gráfica do IFTM é trimestral, sendo que as notas do ano são
divididas em três partes: 30, 35 e 35, totalizando 100 pontos no ano. O professor de
programação está querendo automatizar o processo de fechamento de notas. Faça um
programa para somar as notas dos três trimestres de todos alunos da turma.
Exemplo:
package course;
import java.util.Locale;
import java.util.Scanner;
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
sc.close();
}
}