Introdução ao Java/Fundamentos

Esta aula será uma referência para você iniciar no Java, pois contem informações básicas sobre a linguagem.

No texto a seguir você encontrará temas que serão importantes para iniciar o seu primeiro programa, mas depois servirá apenas como referência.

Se você é iniciante e ainda não leu esta aula, deverá buscar motivação e continuar a leitura.


Palavras-chave (ou Palavras Reservadas)

editar

As palavras-chave são palavras reservadas pelo Java, que você não poderá utilizar nos seus programas como nome de variáveis, classes ou métodos. Estas palavras tem um significado específico para o compilador, são expressões que determinam o que o seu programa irá fazer. Não se preocupe com a funcionalidade de cada palavra, por enquanto basta saber que são reservadas.

Abaixo a lista de todas as palavras-chave (reservadas) do Java:

abstract continue for new switch
assert (3) default goto (1) package synchronized
boolean do if private this
break double implements protected throw
byte else import public throws
case enum (4) instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp (2) volatile
const (1) float native super while

(1) não utilizado;
(2) a partir da versão 1.2;
(3) a partir da versão 1.4;
(4) a partir da versão 5;


Observação: Observe que todas as palavras reservadas foram escritas em letras minúsculas. Os programas escritos em Java são "case sensitive", ou seja, o compilador considera diferente as letras maiúsculas das minúsculas.

Sintaxe da Linguagem Java

editar
  • A sintaxe do Java é muito parecida com C;
  • A linguagem é case sensitive, ou seja, letras minúsculas são diferentes de maiúsculas;
  • Blocos de códigos são colocados entre "{" e "}";
  • Ao final de cada instrução deve-se encerrar a linha com ";", a vantagem é a possibilidade de ter uma instrução em várias linhas;


Comentários

editar

"Comentários" são textos inseridos no código pelos programadores que não serão lidos pelo compilador Java. São utilizados para fazer anotações dentro do código normalmente para explicar o que aquele trecho de código faz ou para lembrar alguma coisa importante, mas não há regras, limites ou obrigações para utilização de comentários, fica a critério do programador.

Existem n formas de incluir um comentário no código do programa:

  • Comentário de final da linha: basta inserir "//" (duas barras) e em seguida inserir o texto/comentário. Todo texto que estiver entre "//" e o final da linha será ignorado pelo compilador.
public class MinhaClasse {
    
    // Isto é um comentário e não será interpretado pelo compilador.
    private String nome;
    private String telefone; // Também é muito comum incluir um comentário na mesma linha do código.

    public MinhaClasse() {

    }
}


  • Bloco de comentário: Para iniciar um bloco de comentário utilize "/*" (barra e asterísco) e para finalizar "*/" (asterísco e barra). Todo texto que estiver entre "/*" e "*/" será ignorado pelo compilador.
public class MinhaClasse {
    
    // Isto é um comentário e não será interpretado pelo compilador.
    private String nome;
    private String telefone; // Também é muito comum incluir um comentário na mesma linha do código.

    public void metodoQualquer() {

        /* Comentário em bloco. Muito bom 
           para textos longos */
        ...

        /* Este também é um comentário em bloco,
         * mas deste jeito fica mais visível e organizado.
         */
        ...
    }

    /**
     * Este tipo tem a vantagem de ser utilizado
     * para gerar a documentação atravé do javadoc
     */
    public String getNome() {

    }
}


Convenções

editar

Convenções são boas práticas adotadas pela comunidade de desenvolvedores que padronizam o "jeitão" de se escrever um código Java. Estas convenções foram tão bem elaboradas e divulgadas que hoje em dia é difícil aceitar um programa que não esteja apoiando tais convenções. São tão bem vindas que viraram regras.

As razões principais para a utilização destas convenções são:

  • Dificilmente um programador ficará eternamente responsável pela manutenção do código;
  • Aumento de produtividade uma vez que o programa fica mais legível;
  • Padrão de usabilidade bem aceito por quem lê o código.


Comentários iniciais do código

Sempre iniciar um arquivo .java com um bloco de comentários com informações importantes sobre a classe.

/*
 * Nome da classe
 * Versão
 * Data
 * Autor
 * Informações de Copyright
 */


Package e Import

Logo após os comentários iniciais, declarar o pacote e depois importar as classes necessárias.


Indentação

A identação é o recuo de um texto se comparado com as linhas anteriores. Todo programa Java de ter suas linhas indentadas para definir a estrutura do código, determinando "o que está dentro do que". O objetivo é tornar o código mais legível. Por padrão, utiliza-se 4 ou 2 espaços para cada nível de indentação.

primeiro nível {
    
    segundo nível {
        
        está dentro do primeiro nível;
        
        terceiro nível {
             está dentro do segundo nível;
        }
    }
}


Classes e Interfaces

Os nomes das Classes e Interfaces devem iniciar com letras maiúsculas, bem com a primeira letra de cada palavras que compoem o nome da classe ou Interface. Exemplo:

public classe MinhaClasse {

}



Atributos e Métodos

Os nomes dos atributos e métodos devem iniciar com letras minúsculas e a primeira letra de cada palavra deve iniciar com letra maiúscula. Exemplo:

public classe MinhaClasse {

    private String atributoPrimeiro; // este é um atributo
    
    /* este é um método */
    public String getAtributoPrimeiro() {

    }
}


Constantes

Constantes são atributos que não serão modificados durante a execução do programa. O nome de qualquer constate deve ser definido com todos os caracteres maiúsculos e as palavras separadas por "_". Exemplo:

public classe MinhaClasse {

    public static final int MINHA_CONSTANTE = 1; // a constante sempre será igual a 1
    
}


Atributos e Métodos

editar
  • Atributos: são criados nos

Operadores

editar

Operadores Aritméticos

Operador Operação Exemplo Resultado
+ Adição x = 5 + 5; 10
- Subtração y = 6 - 2; 4
* Multiplicação m = 2 * 4; 8
/ Divisão d = 8 / 4 2

Operadores Relacionais

Operador Significa Exemplo Resultado
== __Igual á__ 5 == 5 Verdadeiro
!= __Diferente de__ 7 != 7 Falso
> __Maior que__ 10 > 7 Verdadeiro
< __Menor que__ 7 < 8 Verdadeiro
<= __Menor e igual á__ 8 <= 8 Verdadeiro
>= __Maior e igual á__ 8 >= 6 Verdadeiro

Operadores Lógicos

Operador Significa Exemplo Resultado
|| __Ou__ 5 == 6 || 6 != 3 Ambas opções são válidas, True
&& __E__ 6 == 3 && 4 == 4 Ambas opções são válidas, False
^ __Ou Exclusivo__ 5 == 5 ^ 7 != 3 As duas não podem ser Verdadeiras, só uma, então False

Estruturas condicionais

editar

Uma das coisas mais importantes de uma linguagem para ser considerada útil. Muitas vezes necessitamos verificar algo, e se a verificação for verdadeira, execute algo, exemplos:

Precisamos verificar se é de dia, ou de noite;

É necessário verificar se a média do aluno é maior que 7, se sim, imprima a nota, e diga que o aluno passou, senão, imprima a nota e pedidos de desculpas.

Para isso, usamos as condições, verificamos uma condição, se for verdadeira, faça isso, senão, faça aquilo. Para isso, usamos as instruções if e else. Então, if significa 'se', e else que dizer senão.

exemplo:

if (5 != 4) {
    System.out.println("Cinco é diferente de 5");
} else {
    System.out.println("Como pode, eu achei que 5 fosse diferente de 4, não é?");
}

Vejamos bem, damos a função if, e passamos de parâmetros uma condição, usando os operadores relacionais.

Encadeamento de condicionais

As vezes precisamos verificar algo com if, mas se essa instrução for falsa, ou seja else, mas precisamos verificar algo mais para isso, usamos a função else if(){}

Exemplo:

if (5 == 5 && x == 3) {
    System.out.println("A condição é verdadeira");
} else if (x== 10) {
    System.out.println(x + " é igual á 10");
}

Estruturas de repetição ou laços de repetição

editar

Introdução a estruturas de repetição

editar

Muitas das vezes, precisamos repetir certa ação, até certo ponto. Por exemplo, você conta de 1 até que chegue no 10, isso é uma estrutura de repetição.

Imagina se te pedem o seguinte: Conte a partir do 1 enquanto a variável de controle for diferente de 20, você não vai imprimir de 1 a 20, use o chamados laços de repetição; São eles:

  1. while - Significa "enquanto";
  2. do while - quer dizer, "faça enquanto";
  3. for - quer dizer "para";

Laço while

While quer dizer enquanto, então, com while repetimos algo enquanto uma condição for verdadeira. E essa condição é passada como parâmetro a função while.

Ps: As vezes nos usamos o operador de incremento, o '++' para incrementar a variável de controle e a repetição seguir;

Exemplo:

while (x != 10) {
    System.out.println(x);
    x++;
}

Então funciona assim: é verificado se a condição é verdadeira, se sim ele faz, ao chegar no incremento, ou seja "x++", ele vai voltar a condição e verificar se ela é-verdadeira, até ser falsa;

Faça isso em seu editor.

Laço do while

O 'do', quer dizer "faça", então esse laço do while, funciona de forma diferente. Em vez de verificarmos se a condição é verdadeira no começo, verificamos no fim. Então ele vai fazer tal coisa, e verificar se a condição é verdadeira

Exemplo:

do {
    System.out.println(x);
} while (x != 20);

Então funciona assim: ele faz o que está no bloco de instrução, e verifica se a condição é verdadeira, se sim, faz de novo e assim sucessivamente;

Laço for

O laço de repetição for, significa para, ele não é o mais importante laço de repetição, mas mais usado. Ele faz o incremento a variável de controle logo no começo ou seja, repetição com variável de controle.

Exemplo:

for (int i = 0; i == 10; i++) {
    System.out.println("Ola mundo pela " + i + " vez);
}

Então lemos o laço for assim: para i igual á 0 até i ser igual á 10 passo 1. ou seja, nós dizemos até quando o laço vai, e ja incrementamos 1.;

Modificadores de acesso

editar
  • private Todo método ou variável que utilizar este modificador será acessado dentro da sua própria classe;
  • protected Métodos ou variáveis acessados por qualquer classe do mesmo pacote ou subclasse;
  • public Faz com que uma classe, método ou variável possa ser acessado a partir de qualquer outra classe, inclusive as classes de outros projetos.

Variáveis

editar

As variáveis são um recurso utilizado para armazenar memória, ou seja, quando declaramos variáveis, alocamos um espaço na memória que vai armazenar valores, são muito importantes. Mas elas são padronizadas em tipo, que se chamam tipos primitivos, e possuem fases, a declaração, a inicialização onde se atribui um valor a mesma, e a manipulação. A declaração segue o modelo Abaixo:

Tipo Nome;

E caso sde atribuição de valores na declaração, ou seja a inicialização, fazemos:

Tipo nome = valor;

Exemplo:

int valor;//Aqui declaramos a variável de tipo primitivo int, ou seja inteiro

valor = 5;//Aqui inicializamos a variável com o valor 5

Tipos primitivos e classes

editar

A declaração de variáveis pode ser feita de 3 maneiras

Normal:

Tipo nome = valor;

Essa é a forma normal para declarar variáveis.

Type casting:

É usado em algumas situações em que se é necessário forçar que a variável seja de tal tipo

Tipo nome = (Tipo) valor;

É usado para forçar o tipo da variável.

Usando classe, criando objetos

É um pouco mais de orientação a objetos em java, nós ainda não á estudamos mas vamos dar uns conceitos.

Existem diversas classes (e tambem voce pode criar sua propria classe), essas classe servem como um projeto de um objeto , então nós criamos um objeto que irá referenciar uma área da memória e armazenar nele um valor, siga o exemplo:

Classe NomeDoObjeto = new Classe;

A palavra-chave 'new' significa novo, ou seja, criamos um novo objeto de certa classe.

Tipos primitivos e classes
editar

Os tipos primitivos são importantes pois Java é uma linguagem Fortemente Tipada , isso quer dizer que é importante ter o tipo ou classe, veja abaixo uma tabela dos tipos primitivos e seus modificadores

Tipo Valor Tamanho Exemplo
int Armazena valores

inteiros

4 bytes int i = 9;
float Armazena números

com ponto flutuante

float x = 56f;
char Armazena caracteres

únicos

1 byte char c = 'a';
bool Armazena valores

booleanos, ou seja

true ou false

Verdadeiro e false

1 bit bool b = false;

Modificadores de tipo

editar

Os tipos primitivos possuem modificadores de tipo.

Os modificadores de tipo dos inteiros são:

unsigned - Armazena números bem pequeno e ocupa menos memória

short - Armazena um pouco mais que o unsigned e mais memória

int - Padrão

long - Armazena números grandes e ocupa mais memória

O único modificador do float é o double, que armazena o dobro de float

E outras coisa que gostaria de ressaltar, o tipo char só armazena um único caractere, não se preocupe, há uma classe chamada de String(Nomes de classe tem primeira letra minúscula)

Exemplo:

String nome = "Joao";