JAVA
É uma Linguagem Tipada: é necessário informar o tipo de variável
antes de declará-la
→Esse tipo de linguagem evita problemas de compatibilidade
Variável: espaço de memória que armazena dados e valores
→Valores podem ser várias coisas como palavras, números,
true/false dentre outros
Packages: subcompartimentos da repartição maior
Javaclass: molde para criar os códigos em Java
Boilerplate: receita de bolo criada pelo Java quando se inicia um
projeto, existem infinitos
Declaração: para iniciar a programar é necessário declarar o que
faremos
→Atalho InteliJ: psvm
Tipos de Dados
Dados Primitivos: são dados que de maneira geral não recebem
métodos de maneira padrão (imutáveis)
→Principais:
-int: Números inteiros (até 2147483647)
-long: Números inteiros maiores que um int
-float: Números de ponto flutuante de precisão simples
-double: Números de ponto flutuante de precisão dupla
-char: Um único caractere
-boolean: Valores verdadeiros (true) ou falsos (false)
-byte: Números inteiros pequenos
-short: Números inteiros menores que um int
Dados Não Primitivos: são dados em que se pode colocar métodos
para realizar alterações sem que seja mudado seu escopo
→Principais:
-String: Guardar nomes
-array: Lista de nomes
-class: Declara o tipo de classe que pertence
Métodos: são características que colocamos dentro das variáveis
não primitivas
→Quando adicionado um método para imprimir para o usuário é
necessário criar uma variável diferente
Ex:
String nome = “Gabriel”;
String nomeUpperCase = nome.toUpperCase();
System.out.println(nomeUpperCase);
*.toUpperCase(); → Deixa tudo maiúsculo
*.toLowerCase(); → Deixa tudo minúsculo
Condições
São etapas que necessitam ser completadas para algo acontecer
if: se cumpre a condição faça isso
if(condição) {
resultado;
}
else if: se não cumpre a condição anterior, mas cumpre essa, faça
isso
else if(condição) {
resultado;
}
else: se não cumpre nenhuma condição faça isso
else{
resultado;
}
Scanner
São compartimentos onde podemos colocar espaços para que o
usuário nos forneça dados
→Um único scanner pode trabalhar com diferentes tipos de dados
Scanner nomeDoScanner = new Scanner(System.in);
-new Scanner: cria um novo scanner
-System.in: informa que será colocado dados dentro do scanner
→Quando se abre um scanner é necessário fechá-lo
nomeDoScanner.close();
Métodos no Scanner: determina o tipo de dado que o usuário
fornecerá por meio do Scanner
String nomeDoScanner.nextLine();
int nomeDoScanner.nextInt();
float nomeDoScanner.nextFloat();
byte nomeDoScanner.nextByte();
long nomeDoScanner.nextLong();
boolean nomeDoScanner.nextBoolean();
double nomeDoScanner.nextDouble();
Switch Cases
Determina condições específicas para algo acontecer
switch(motivador){
case 1:
…
break;
case 2:
…
break;
default:
…
break;
}
-case: delimita os casos
-break: encerra a aplicação se for true
-default: caso padrão caso o input do usuário não esteja nos cases
Ternários
Função que pode ser repetida infinitas vezes enquanto atinja o
critério estabelecido
while: enquanto
while (condição) {
tudo aqui vai acontecer
}
for: para
for (int i = 0; i < X; i++) {
tudo aqui vai acontecer
}
-int i: define um int denominado i
-i < x: define até que número vai ser ativo
i++: define que a cada execução será adicionado 1 em i
Arrays
São utilizadas para agrupar uma coleção de informações
→É necessário declarar o tipo de Array
→Array é do tipo de dado não primitivo (referência)
→Ao se iniciar um array é necessário declarar a quantidade de
espaço de memória que terá
→Index: é o nome da ordem, começa a se contar do 0 (0, 1, 2, …)
Criar Array
tipoDeVariável[ ] nomeDoArray = new String[Quantidade de
memória]
Inserir Dado
nomeDoArray[index] = “dado”;
Mostrar ao Usuário
System.out.println(nomeDoArray[index]);
Array X Lista
Array
→Tipo definido
→Tamanho fixo
→Precisa ser modificado para ter mais memória
Lista
→Tamanho flexível
→Se expande ao necessitar de mais memória
Alocamento de memória
Quando um String é declarado ele terá um espaço de memória
(referência) diferente alocado. Cada String ter uma referência
gasta muita memória
String primeira; →Terá uma referência X
String segunda; →Terá uma referência Y
Em um Array todas as variáveis terão a mesma referência
gastando menos memória. Por terem a mesma referência que é
necessário especificar o index do Array
String primeira; →Terá uma referência Z
String segunda; →Terá uma referência Z
→Exibição de Array sem valor←
Array String sem valor: retorna null
Array int sem valor: retorna 0
Array boolean sem valor: retorna False
Array double sem valor: retorna 0.0
null: resposta de quando não existe valor a ser devolvido
Objeto de memória: toda vez que iniciamos um array estamos
lidando com objetos de memória
Redeclarar Array
Redeclarar: modificar o dado pré estabelecido
nomeDoArray[index a ser modificado] = novoValor
Loop de Array
Vai mostrar todos os valores do Array
for(int i = 0; i < max. Index do array; i++){
System.out.println(nomeDoArray[i]);
}
Array 2D
Array que contem outro Array dentro, também chamado de array
de matrizes
tipoDeDado [] [] nomeDoArray = new tipoDeDado [memória
linha] [memória coluna];
Inserir dados
nomeDoArray [] [];
-Primeiro []: linha
-Segundo []: coluna
Coluna 1 Coluna 2 Coluna 3
Linha 1 (1;1) (1;2) (1;3)
Linha 2 (2;1) (2;2) (2;3)
Linha 3 (3;1) (3;2) (3;3)
Classes e Objetos
→Praticamente tudo no Java é Objeto
→Todo objeto em Java é feito através de um molde chamado
classes
→Molde do Objeto é feito somente dentro da classe não
necessitando do psvm
Class (molde): pode ser criado em um arquivo e acessado em
outro
-Criação de classe
public class nomeDoMolde{
tipoDeVariavel nomeDaVariavel;
}
-Criação de Objeto a partir da classe
nomeDoMolde nome = new nomeDoMolde();
nome.TipoDeVariavel = valor;
Métodos
São utilizados para alterar atributos de variáveis
nomeDaVariavel.metodo();
toLowerCase e toUpperCase são exemplos de metodos fornecidos
pelo Java
→public class: classe que pode ser acessada em qualquer parte do
código
→Existem dois tipos de métodos void e return
-void: não retorna valor nenhum
-return: retorna o tipo de variável selecionada
Criar método personalizado
VOID
public void nomeDoMetodo( ){
…
}
RETURN
public tipoDeVariavel nomeDoMetodo( ){
return valor;
}
→nomeDaVariavel.nomeDoMetodo( ); não imprime o return no
terminal, para imprimir é necessário guardar dentro de outra
variável
-tipoDeVariavel nome = nomeDaVariavel.nomeDoMetodo( );
-System.out.println(nome);
Parâmetro
Condição para que o método aconteça
→Criação
public tipoDeVariável nomeDoMetodo(TipoDeVariavel
nomeDaVariavel) {
return valor;
}
→Exibição
tipoDeVariável nome =
nomeDaVariável.nomeDoMetodo(PARAMETRO);
System.out.println(nome);
Exemplo:
→Metodo←
public int anos_para_maioridade(int idade_maioridade){
Return idade_maioridade – idade;
}
→Main←
Gabriel.idade = 14;
int tempo = Gabriel.anos_para_maioridade(18);
System.out.println(tempo);
TERMINAL: 4
Orientação a Objetos
Habilidade de se trabalhar com classes e objetos, os manipulando
4 Pilares da Orientação a Objeto
(Encapsulamento, Herança, Abstração, Polimorfismo)
Herança
Usar características de uma classe mãe em outras classes filhas,
poupando código e agilizando trabalho
→Herdar características da classe principal (extends): com o uso
do extends a classe filha tem acesso a todas as características da
classe mãe
public class classeFilha extends classeMae{ }
Interface
Define métodos a serem utilizados sem especificá-los
→Não permite que seja criado um objeto a partir dela
→Interface não é um molde
→Ao criar os métodos dentro da interface usar o public é
redundância
public interface nomeDaInterface{
tipoDeMetodo nomeDoMetodo();
}
→Método não vai ter código, ele deve ser redeclarado em uma
classe
→Acessar interface em uma classe (implements): sempre que uma
interface for implementada em uma classe, todos os métodos
presentes na interface devem obrigatoriamente redeclarados na
classe
public class nomeDaClasse implements nomeDaInterface{ }
Polimorfismo
Criar função única que pode ser utilizada em diferentes classes
com diferentes caracteristicas
→Criar um método geral em uma classe
→Sobrescrever o método em outra classe usando @Override
→Todos os Objetos criados na classe utilizarão o método
sobrescrito
Ex:
→CLASSE←
public class alpha{
String nome;
//método geral
public void materia(){
System.out.println(“Estudo JAVA”)
}}
→MAIN←
aluno Cleber = new alpha();
Cleber.materia();
TERMINAL: Estudo JAVA
→CLASSE←
public class beta extends alpha{
@Override
public void materia(){
System.out.println(“Estudo Python”)
}
}
→MAIN←
beta Matheus = new beta();
Matheus.materia();
Terminal: Estudo Python
Construtores
Padrão no qual o objeto deve ser criado, divididos em no args e all
args
→No Args constructor: construtor vazio não necessariamente
recebe argumento nenhum
→All Args constructor: construtor que é preenchido com todos os
atributos da classe
-this.valor: referência a variável
public nomeDaClasse (argumento){
this.nomeDaVariavel = argumento;
}
Exemplo:
→CLASS←
public class alunos{
String nome;
String linguagem;
int idade;
public alunos (String nome, String linguagem, int idade){
this.nome = nome;
this.linguagem = linguagem;
this.idade = idade;
}
}
→MAIN←
alunos Gabriel = new alunos (“Gabriel”, ”Java”, 20)
System.out.println(Gabriel.nome, Gabriel.linguagem,
Gabriel.idade)
TERMINAL: Gabriel Java 20
Classe Abstrata
Servem para padronizar o código, forçando todas as suas classes
filhas a seguirem o mesmo padrão e não permitem que um objeto
seja criado a partir dela, somente de suas filhas
→Chamada de Super Classe
→Obriga a utilização de Subclasses para a criação de Objetos
public abstract class nomeDaClasse{ }
Métodos Abstratos
→Não podem ter corpo
→Obrigatório instanciar (@Override)
public abstract void nomeDoMetodo
Classe Abstrata X Interface
Classe Abstrata
→Pode conter métodos abstratos ou não
→Pode conter variáveis que serão definidas posteriormente
Interface
→Todo método é automaticamente abstrato
→Todas as variáveis são FINAL, ou seja, fixas após serem
definidas na interface
Abstração + Polimorfismo
Encapsulamento
Capacidade de proteger variáveis e classes para que não haja
vazamento e mantendo assim protegido e encapsulado os objetos