Dicas Essenciais de Core Java
Dicas Essenciais de Core Java
O compilador Java gera um formato de arquivo objeto neutro em relação à arquitetura, o que torna o
Neutro em relação à arquitetura
código compilado executável em muitos processadores, com a presença do sistema de tempo de execução Java.
Alto Desempenho Java é mais rápido do que outras linguagens de programação interpretadas tradicionais porque Java
O bytecode é "perto" do código nativo. Ele ainda é um pouco mais lento do que uma linguagem compilada.
Java é uma linguagem interpretada, é por isso que é mais lenta do que as compiladas
linguagens, por exemplo, C, C++, etc.
Multithreaded Uma thread é como um programa separado, executando concorrentemente. Podemos escrever programas em Java.
que lidam com muitas tarefas ao mesmo tempo definindo múltiplas threads. A principal vantagem de
a programação em múltiplas threads é que não ocupa memória para cada thread. Ela compartilha uma comum
área de memória. As threads são importantes para multimídia, aplicações Web, etc.
Interpretado O código byte Java é traduzido em tempo real para instruções nativas da máquina e não é armazenado.
em qualquer lugar. O processo de desenvolvimento é mais rápido e analítico, uma vez que a vinculação é um
processo incremental e leve.
JVM, JDK e JRE
JVM JVM (Java Virtual Machine) é uma máquina abstrata. É chamada de máquina virtual porque
não existe fisicamente. É uma especificação que fornece um ambiente de execução no qual
O bytecode Java pode ser executado. Ele também pode executar programas que são escritos em outros
linguagens e compiladas para bytecode Java. No tempo de compilação, o arquivo java é compilado pelo Java
Compilador (não interage com o sistema operacional) e converte o código Java em bytecode.
JRE JRE (Java Runtime Environment) é um conjunto de ferramentas de software que são usadas para desenvolver
Aplicações Java. É usado para fornecer o ambiente de execução. É a implementação
do JVM. Ele existe fisicamente. Contém um conjunto de bibliotecas + outros arquivos que o JVM usa em
tempo de execução.
JDK O Kit de Desenvolvimento Java (JDK) é um ambiente de desenvolvimento de software que é usado para
desenvolver aplicativos e applets Java. Ele existe fisicamente. Ele contém JRE + desenvolvimento
ferramentas.
Regras de Sintaxe para Java
Regras de Sintaxe do Java Java é uma linguagem sensível a maiúsculas e minúsculas.
A execução do programa Java começa pelo método main, que é obrigatório em todo Java
programa.
Cada declaração deve terminar com o símbolo de ponto e vírgula.
Code blocks enclosed with {}
Método Main e Syso
Método Main em Java Função/Método Principal: public static void main (String [] args) {
}
público – Modificador de Acesso
static – Modificador Não de Acesso
void – Tipo de Retorno (Não retorna nada)
Principal - nome do método
Método syso Java Programa Exemplo (Método Syso): [Link]("Meu Primeiro Código Java");
Sistema – Classe (Pré-definido)
out – Esta é uma instância do tipo PrintStream, que é um campo membro público e estático de
a classe System
println – método
Meu Primeiro Código Java – Mensagem
Comentários Java, Tipos de Dados, Variáveis e Operadores
Sintaxe de Comentários em Use // para comentários de uma linha
Java: Use /* …… …….. …………..
*/ para comentários de múltiplas linhas
Tipos de Dados Primitivos i) Tipos Inteiros:
1) byte (8 bits); Exemplo: byte a =10;
2) curto (16 bits); Exemplo: curto a = 1000;
3) Inteiro (32 bits); Exemplo: int i = 10000;
4) longo (64 bits); Exemplo: long l = 100000000000L; ii) Tipos relacionais (Números com
casas decimais)
5) ponto flutuante (32 bits); Exemplo: float f = 1.23f ou (float) 1.23;
6) duplo (64 bits); Exemplo: double d =123,4567890; iii) Caracteres
7) Caracter (16 bits); Exemplo: char c ='Z' iv) Condicional
8) Booleano (1 bit); Exemplo: booleano b = verdadeiro;
Dados Não Primitivos Os tipos de dados não primitivos ou de referência em Java são Objetos, Classe, Interface, String e
Tipos Arrays.
Exemplo: String str = "Mundo Java"
Variável Java a) Variável local: A variável local é declarada em métodos ou blocos.
b) Variável de instância: Variáveis de instância são declaradas dentro da classe, mas fora do corpo
do método. É chamado de variável de instância porque seu valor é específico da instância e não é
compartilhado entre instâncias.
c) Variável de Classe/Estática: Uma variável que é declarada como estática, não pode ser local. O usuário pode
create a single copy of static variable and share among all the instances of the class.
Exemplo:
classe Teste{
int i1=10; //variável de instância
static int i2=20; //variável estática/classe
void testmethod(){
int i3=30; //variável local
}
}
Exemplo de String:
char[] ch={'j','a','v','a'};
String s2=new String(ch);
Java Loops
Laço For O loop for em Java é uma instrução de controle de fluxo que itera uma parte do programa várias vezes.
vezes.
O loop for repete um bloco de instruções um número especificado de vezes.
Se o número de iterações for fixo, é recomendado usar o loop for.
Sintaxe:
for (startValue; endValue; increment/decrement){ Statement(s) }
Laço For Aprimorado In Java, there is another form of for loop (in addition to standard for loop) to work with
arrays e coleções, o loop for aprimorado.
O loop aprimorado também é conhecido como loop for-each, que reduz significativamente o código e
não há uso do índice ou melhor, do contador no loop.
Sintaxe do loop for aprimorado:
para(declaração : expressão)
{
// Declarações
}
Sintaxe:
Inicialização; enquanto (Condição){ Instrução(ões); incremento/decremento; }
Laço Do While O loop do-while em Java é usado para iterar uma parte do programa várias vezes. Se o
o número de iterações não é fixo e você deve executar o loop pelo menos uma vez, é
recomendada a usar o loop do-while.
Executa um bloco de instruções pelo menos uma vez, independentemente da condição.
Primeiro, as declarações dentro do loop são executadas e então a condição é avaliada, se o
a condição retorna verdadeira então o controle é transferido para o 'fazer', caso contrário, pula para o
próxima declaração após do-while.
Sintaxe:
Inicialização; faça { Declaração(ões); incremento/decremento; } enquanto (Condição);
Declaração Condicional em Java
Se a instrução if é usada apenas para especificar um bloco de código Java a ser executado se uma condição for atendida
atendeu (verdadeiro).
se(condição){
Declaração(ões);
}
Se não Uma instrução if pode ser seguida por uma instrução else opcional, a instrução else é usada para
specify a block of code to be executed if the condition is not met (false).
se(condição) {
Declaração(ões);
}
senão {
Declaração(ões);
}
se senão se escada a instrução else if é usada para especificar uma nova condição quando a primeira condição é falsa.
se(condição_1) {
//execute esta instrução caso a condição_1 seja verdadeira
Declaração(ões);
}
senão se(condição_2) {
//execute esta declaração caso a condição_1 não seja atendida, mas a condição_2 seja verdadeira
Declaração(ões);
}
else if(condição_3) {
//execute esta declaração caso a condição_1 e a condição_2 não sejam atendidas, mas
a condição_3 é verdadeira
Declaração(ões);
}
…..
senão {
//execute esta declaração caso nenhuma das condições acima seja verdadeira
Declaração(ões);
}
Trocar switch(expressão) {
case value :
// Declarações
quebrar; // opcional
valor do caso :
// Declarações
quebrar; // opcional
.
.
default : // Optional
// Declarações
}
Diferentes tipos de exceções em Java
Exceção Aritmética É lançada quando uma condição excepcional ocorreu em uma operação aritmética.
ArrayIndexOutOfBound É lançado para indicar que um array foi acessado com um índice ilegal. O índice é
Exceção ou negativo ou maior ou igual ao tamanho do array.
ClassNotFoundException Esta exceção é levantada quando tentamos acessar uma classe cuja definição não é encontrada
n
FileNotFoundException Esta exceção é levantada quando um arquivo não está acessível ou não pode ser aberto.
Polimorfismo Polymorphism in Java is a concept by which we can perform a single action in different
maneiras.
Polimorfismo derivado de duas palavras gregas, Poly-significa Muitos e Morphs - significa
formas; Então polimorfismo significa muitas formas.
Existem dois tipos de Polimorfismo disponíveis no Java.
a) Polimorfismo em Tempo de Compilação (Sobrecarga de Métodos)
b) Polimorfismo em Tempo de Execução (Sobrescrita de Método)
Method Overloading Dois ou mais métodos com o mesmo nome na mesma classe, mas que diferem nas seguintes
maneiras.
a) Número de Argumentos
b) Tipo de Argumentos
Exemplo de Sobrecarga de Métodos:
public class Method Overloading {
public void add(int a, int b){
[Link](a+b);
}
public void add(int a, int b, int c){
[Link](a+b+c);
}
public void add(double a, double b){
[Link](a+b);
}
public static void main(String[] args) {
Sobrecarga de Método obj = new Sobrecarga de Método();
[Link](100, 200);
[Link](15, 25, 35);
[Link](101.234, 23.456);
}
Sobrescrita de Método Se a subclasse (classe filho) tiver o mesmo método que está declarado na classe pai, isso é conhecido como
como sobrescrita de método em Java.
Quando um método em uma subclasse tem o mesmo nome, os mesmos parâmetros ou assinatura e
mesmo tipo de retorno (ou sub-tipo) que um método em sua superclasse, então o método na
a subclasse é dita sobrepor o método na superclasse.
Vamos pegar um exemplo simples para entender isso. Temos duas classes: uma classe filha Menina e
uma classe pai Humano. A classe Menina estende a classe Humano. Ambas as classes têm um
método comum void eat(). A classe Girl está fornecendo sua própria implementação para o eat()
method or in other words it is overriding the eat() method.
Example:
classe Humano{
//Método substituído
public void comer()
{
[Link]("Human is eating");
}}
classe Menina estende Humano{
Método de sobrescrita
public void comer(){
[Link]("A garota está comendo");
}
public static void main(String args[]) {
Garota obj = new Garota();
//Isto chamará a versão do método eat() da classe filha
[Link]();
}
A menina está comendo
Abstração A abstração é um processo de ocultar os detalhes de implementação e mostrar apenas a funcionalidade
para o usuário.
De outra forma, mostra coisas importantes para o usuário e oculta detalhes internos, para
exemplo, enviando SMS onde você digita o texto e envia a mensagem. Não se sabe
o processamento interno sobre a entrega da mensagem.
A abstração foca no que o Objeto faz em vez de como ele faz.
A class which is declared with the abstract keyword is known as an abstract class in Java. It
pode ter métodos abstratos e não abstratos (método com corpo).
De Classe (Classe Concreta ou Classe Abstrata) para Classe usamos a palavra-chave "extends".
Exemplo:
classe abstrata Animal{
void run();
}
classe Tigre estende Animal{
void run()
[Link]("O tigre está correndo");
}
public static void main(String args[]){
Tiger obj = new Animal();
[Link]();
} }
Interface Interface é um bloco de definição de tipo em Java que é 100% abstrato
Todos os métodos da Interface são, por padrão, públicos e abstratos.
modificadores estáticos e finais não são permitidos para métodos de interface.
Nas Interfaces, as variáveis são públicas, estáticas e finais por padrão.
A interface não pode ser instanciada, e não contém nenhum construtor.
A interface pode ser usada com a palavra-chave 'implements' para uma Classe.
Uma classe que implementa uma interface deve implementar todos os métodos declarados na
interface.
From Interface to Interface, we use “extends” keyword
Exemplo:
interface pública Bike{ void motor(); void rod Wheels(); void assento(); }
Encapsulamento A encapsulação é um dos quatro conceitos fundamentais de POO. Os outros três são
herança, polimorfismo e abstração.
A encapsulação em Java é um processo de agrupar código e dados juntos em uma única unidade,
por exemplo, uma cápsula que é misturada com vários medicamentos.
Na encapsulação, as variáveis de uma classe ficarão ocultas de outras classes e podem ser
acessado apenas pelos métodos de sua classe atual. Portanto, também é conhecido
como ocultação de dados.
A encapsulação pode ser alcançada por: Declarar todas as variáveis na classe como privadas e
escrevendo métodos públicos na classe para definir e obter os valores das variáveis.
Estático A palavra-chave static em Java é usada principalmente para gerenciamento de memória. Podemos aplicar java
palavra-chave static com variáveis, métodos, blocos e classe aninhada. A palavra-chave static
pertence à classe do que uma instância da classe.
Quando uma variável é declarada como estática, uma única cópia da variável é criada e compartilhada.
entre todos os objetos a nível de classe. Variáveis estáticas são, essencialmente, variáveis globais. Todos
Instâncias da classe compartilham a mesma variável estática.
É possível criar membros de classe (variáveis e métodos) que podem ser acessados e
invocado sem criar uma instância da classe. Para criar tal membro, nós
é preciso usar a palavra-chave estática ao declarar um membro de classe.
Super A palavra-chave super em Java é uma variável de referência que é usada para se referir ao pai imediato
classe objeto.
Sempre que você cria a instância de uma subclasse, uma instância da classe pai é criada
implicitamente referenciado pela variável de referência super.
A palavra-chave super pode ser usada em nível de variável, método e construtor.
Métodos privados da superclasse não podem ser chamados. Apenas métodos públicos e protegidos
pode ser chamado pela palavra-chave super.
classe Animal{
String Name=“Elephant";
}
classe Cachorro estende Animal{
String Name=“Bullet";
void imprimirNome(){
[Link](Nome);//imprime o Nome da classe Dog
[Link]([Link]);//imprime o Nome da classe Animal
}}
classe TestSuper{
public static void main(String args[]){
Cachorro d=new Cachorro();
[Link]();
}}
jogar A palavra-chave throw em Java é usada para lançar explicitamente uma exceção de um método ou qualquer outro contexto.
bloco de código. A palavra-chave throw é utilizada principalmente para lançar exceções personalizadas.
lança A palavra-chave throws é usada para declarar a lista de exceções que podem ser lançadas por isso.
método ou construtor.
A cláusula throws é usada na assinatura do método para indicar que este método pode lançar exceções.
um dos tipos de exceções listados. O chamador desses métodos deve tratar a exceção
usando um bloco try-catch.
Existem muitos tipos de exceção disponíveis em
Java: ArithmeticException, ClassNotFoundException, ArrayIndexOutOfBoundsException
etc.
A palavra-chave throws pode ser seguida por mais uma classe de exceção, separadas por vírgulas.
Sintaxe:
public static void testmethodname( ) lança FileNotFoundException,
ConnectionException {
//código
}
void metodoTeste() lança Excecao1, Excecao2 {
se (uma exceção ocorrer) {
lançar nova Exception1();
}
se (outra exceção ocorrer) {
lançar nova Exceção2();
}
}