diff options
Diffstat (limited to 'pt-br/java-pt.html.markdown')
-rw-r--r-- | pt-br/java-pt.html.markdown | 435 |
1 files changed, 435 insertions, 0 deletions
diff --git a/pt-br/java-pt.html.markdown b/pt-br/java-pt.html.markdown new file mode 100644 index 00000000..f922f6d9 --- /dev/null +++ b/pt-br/java-pt.html.markdown @@ -0,0 +1,435 @@ +--- + +language: java +contributors: + - ["Jake Prather", "http://github.com/JakeHP"] + - ["Madison Dickson", "http://github.com/mix3d"] + translators: + - ["Victor Kléber Santos L. Melo", "http://victormelo.com.br/blog"] + - ["Renê Douglas N. de Morais", "rene.douglas.bsi@gmail.com"] +lang: pt-br +filename: LearnJava.java + +--- + +Java é uma linguagem de programação de propósito geral, concorrente, baseada em classes e orientada a objetos. +[Leia mais aqui](http://docs.oracle.com/javase/tutorial/java/index.html) + +```java +// Comentários de uma linha começam com // +/* +Comentários de várias linhas são feitos dessa forma. +*/ +/** +Comentários JavaDoc são feitos assim. São usados para descrever a Classe ou os atributos da Classe. +*/ + +// Importa a classe ArrayList que está dentro do pacote java.util +import java.util.ArrayList; +// Importa todas as classes que estão dentro do pacote java.security +import java.security.*; + +// Cada arquivo .java contém uma classe pública, com o mesmo nome do arquivo. +public class LearnJava { + + // Um programa precisa ter um método main como um ponto de entrada. + public static void main (String[] args) { + + // O System.out.println é usado para imprimir no console + System.out.println("Olá Mundo!"); + System.out.println( + "Integer: " + 10 + + " Double: " + 3.14 + + " Boolean: " + true); + + // Para imprimir sem inserir uma nova lina, use o System.out.print + System.out.print("Olá "); + System.out.print("Mundo"); + + + /////////////////////////////////////// + // Tipos & Variáveis + /////////////////////////////////////// + + // Declara-se variáveis usando <tipo> <nome> [ + // Byte - inteiro de 8 bits com sinal complementado a dois + // (-128 <= byte <= 127) + byte fooByte = 100; + + // Short - inteiro de 16 bits com sinal complementado a dois + // (-32,768 <= short <= 32,767) + short fooShort = 10000; + + // Integer - inteiro de 32 bits com sinal complementado a dois + // (-2,147,483,648 <= int <= 2,147,483,647) + int fooInt = 1; + + // Long - inteiro de 64 bits com sinal complementado a dois + // (-9,223,372,036,854,775,808 <= long <= 9,223,372,036,854,775,807) + long fooLong = 100000L; + // L é usado para indicar que o valor da variável é do tipo Long; + // sem o L, tudo é tratado como inteiro por padrão. + + // Nota: Java não tem tipos sem sinal + + // Float - Ponto Flutuante 32-bits, de precisão simples no padrão IEEE 754 + float fooFloat = 234.5f; + // f é usado para indicar que o valor da variável é do tipo float; + // caso contrário, ela é tratada como double. + + // Double - Ponto Flutuante 64-bits, de precisão dupla no padrão IEEE 754 + double fooDouble = 123.4; + + // Boolean - true & false + boolean fooBoolean = true; + boolean barBoolean = false; + + // Char - Um caractere Unicode de 16 bits + char fooChar = 'A'; + + // Usa-se o final para fazer com que a variável seja imutável. + final int HORAS_QUE_TRABALHEI_POR_SEMANA = 9001; + + // Strings + String fooString = "Aqui está minha String!"; + + // \n é um caractere de escape que inicia uma nova linha + String barString = "Imprimir em uma nova linha?\nSem problemas!"; + // \t é um caractere de escape que adiciona um caractere de tabulação + String bazString = "Você quer adicionar tabulação?\tSem problemas!"; + System.out.println(fooString); + System.out.println(barString); + System.out.println(bazString); + + // Arrays + //O tamanho do array precisa ser determinado na sua declaração + //O formato para declarar um array é: + //<tipo de dado> [] <nome da variável> = new <tipo de dado>[<tamanho do array>]; + int [] intArray = new int[10]; + String [] stringArray = new String[1]; + boolean [] booleanArray = new boolean[100]; + + // Outra maneira de declarar e inicializar um array + int [] y = {9000, 1000, 1337}; + + // Indexando um array - Acessando um elemento + System.out.println("intArray no índice 0: " + intArray[0]); + + // O primeiro termo de um array é o 0 e eles são mutáveis. + intArray[1] = 1; + System.out.println("intArray no índice 1: " + intArray[1]); // => 1 + + // Outras estruturas que devem ser vistas + // ArrayLists - São parecidos com os arrays, porém oferecem mais funcionalidades + // e o tamanho é mutável. + // LinkedLists + // Maps + // HashMaps + + /////////////////////////////////////// + // Operadores + /////////////////////////////////////// + System.out.println("\n->Operadores"); + + int i1 = 1, i2 = 2; // Forma abreviada de escrever múltiplas declarações. + + // Aritmética é feita da forma convencional + System.out.println("1+2 = " + (i1 + i2)); // => 3 + System.out.println("2-1 = " + (i2 - i1)); // => 1 + System.out.println("2*1 = " + (i2 * i1)); // => 2 + System.out.println("1/2 = " + (i1 / i2)); // => 0 (0.5 arredondado para baixo) + + // Módulo + System.out.println("11%3 = "+(11 % 3)); // => 2 + + // Operadores de comparação + System.out.println("3 == 2? " + (3 == 2)); // => false + System.out.println("3 != 2? " + (3 != 2)); // => true + System.out.println("3 > 2? " + (3 > 2)); // => true + System.out.println("3 < 2? " + (3 < 2)); // => false + System.out.println("2 <= 2? " + (2 <= 2)); // => true + System.out.println("2 >= 2? " + (2 >= 2)); // => true + + // Operadores bit-a-bit! + /* + ~ Complemento de um + << Deslocamento a esquerda com sinal + >> Deslocamento a direita com sinal + >>> Deslocamento a direita sem sinal + & E bit-a-bit + | OU bit-a-bit + ^ OU exclusivo bit-a-bit + */ + + // Incrementações + int i = 0; + System.out.println("\n->Inc/Dec-rementação"); + System.out.println(i++); //i = 1. Pós-Incrementação + System.out.println(++i); //i = 2. Pre-Incrementação + System.out.println(i--); //i = 1. Pós-Decrementação + System.out.println(--i); //i = 0. Pre-Decrementação + + /////////////////////////////////////// + // Estruturas de Controle + /////////////////////////////////////// + System.out.println("\n->Estruturas de Controle"); + + // Os comandos If são parecidos com o da linguagem C + int j = 10; + if (j == 10){ + System.out.println("Eu serei impresso"); + } else if (j > 10) { + System.out.println("Eu não"); + } else { + System.out.println("Eu também não"); + } + + // O Loop While + int fooWhile = 0; + while(fooWhile < 100) + { + //System.out.println(fooWhile); + //Incrementando o contador + //Iteração feita 99 vezes, fooWhile 0->99 + fooWhile++; + } + System.out.println("Valor do fooWhile: " + fooWhile); + + // O Loop Do While + int fooDoWhile = 0; + do + { + //System.out.println(fooDoWhile); + //Incrementando o contador + //Iteração feita 99 vezes, fooDoWhile 0->99 + fooDoWhile++; + }while(fooDoWhile < 100); + System.out.println("Valor do fooDoWhile: " + fooDoWhile); + + // O Loop For + int fooFor; + //estrutura do loop for => for(<operação_de_início>; <condição>; <passo>) + for(fooFor=0; fooFor<10; fooFor++){ + //System.out.println(fooFor); + //Iteração feita 10 vezes, fooFor 0->9 + } + System.out.println("Valor do fooFor: " + fooFor); + + // O Loop For Each + // Itera automaticamente por um array ou lista de objetos. + int[] fooList = {1,2,3,4,5,6,7,8,9}; + //estrutura do loop for each => for(<objeto> : <array_de_objeto>) + //lê-se: para cada objeto no array + //nota: o tipo do objeto deve ser o mesmo do array. + + for( int bar : fooList ){ + //System.out.println(bar); + //Itera 9 vezes e imprime 1-9 em novas linhas + } + + // Switch + // Um switch funciona com os tipos de dados: byte, short, char e int + // Ele também funciona com tipos enumerados (vistos em tipos Enum) + // como também a classe String e algumas outras classes especiais + // tipos primitivos: Character, Byte, Short e Integer + int mes = 3; + String mesString; + switch (mes){ + case 1: + mesString = "Janeiro"; + break; + case 2: + mesString = "Fevereiro"; + break; + case 3: + mesString = "Março"; + break; + default: + mesString = "Algum outro mês"; + break; + } + System.out.println("Resultado do Switch: " + mesString); + + // Condição de forma abreviada. + // Você pode usar o operador '?' para atribuições rápidas ou decisões lógicas. + // Lê-se "Se (declaração) é verdadeira, use <primeiro valor> + // caso contrário, use <segundo valor>". + int foo = 5; + String bar = (foo < 10) ? "A" : "B"; + System.out.println(bar); //Imprime A, pois a condição é verdadeira. + + + /////////////////////////////////////// + // Convertendo tipos de dados e Casting + /////////////////////////////////////// + + //Conversão de Dados + + //Convertendo String para Inteiro. + Integer.parseInt("123");//retorna uma versão inteira de "123". + + //Convertendo Inteiro para String + Integer.toString(123);//retorna uma versão String de 123. + + // Para outras conversões confira as seguintes classes + // Double + // Long + // String + + // Casting + // Você pode também converter objetos java, há vários detalhes e + // lida com alguns conceitos intermediários + // Dê uma olhada no link: + // http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html + + + /////////////////////////////////////// + // Classes e Métodos + /////////////////////////////////////// + + System.out.println("\n->Classes e Métodos"); + + // (segue a definição da classe Bicicleta) + + // Use o new para instanciar uma classe + Bicicleta caloi = new Bicicleta(); // Objeto caloi criado. + + // Chame os métodos do objeto + caloi.aumentarVelocidade(3); // Você deve sempre usar métodos para modificar variáveis + caloi.setRitmo(100); + + // toString é uma convenção para mostrar o valor deste objeto. + System.out.println("informações de caloi: " + caloi.toString()); + + } // Fim do método main +} // Fim da classe LearnJava + + +// Você pode incluir outras classes que não são públicas num arquivo .java + + +// Sintaxe de declaração de Classe. +// <public/private/protected> class <nome da classe>{ +// // atributos, construtores e todos os métodos. +// // funções são chamadas de métodos em Java. +// } + +class Bicicleta { + + // Atributos/Variáveis da classe Bicicleta. + public int ritmo; // Public: Pode ser acessada em qualquer lugar. + private int velocidade; // Private: Apenas acessível a classe. + protected int catraca; // Protected: Acessível a classe e suas subclasses. + String nome; // default: Apenas acessível ao pacote. + + // Construtores são uma forma de criação de classes + // Este é o construtor padrão. + public Bicicleta() { + catraca = 1; + ritmo = 50; + velocidade = 5; + nome = "Bontrager"; + } + + // Este é um construtor específico (ele contém argumentos). + public Bicicleta (int ritmoInicial, int velocidadeInicial, int catracaInicial, String nome) { + this.catraca = catracaInicial; + this.ritmo = ritmoInicial; + this.velocidade = velocidadeInicial; + this.nome = nome; + } + + // Sintaxe de um método: + // <public/private/protected> <tipo de retorno> <nome do método>(<args>) // + + // Classes em Java costumam implementar métodos getters e setters para seus campos. + + // Sintaxe de declaração de métodos + // <escopo> <tipo de retorno> <nome do método>(<args>) // + public int getRitmo() { + return ritmo; + } + + // Métodos do tipo void não requerem declaração de retorno. + public void setRitmo(int novoValor) { + ritmo = novoValor; + } + + public void setEquipamento(int novoValor) { + catraca = novoValor; + } + + public void aumentarVelocidade(int incremento) { + velocidade += incremento; + } + + public void diminuirVelocidade(int decremento) { + velocidade -= decremento; + } + + public void setNome(String novoNome) { + nome = novoNome; + } + + public String getNome() { + return nome; // retorna um dado do tipo String. + } + + //Método para mostrar os valores dos atributos deste objeto. + @Override + public String toString() { + return "catraca: " + catraca + + " ritmo: " + ritmo + + " velocidade: " + velocidade + + " nome: " + nome; + } +} // fim classe Bicicleta + +// Velocipede é uma subclasse de bicicleta. +class Velocipede extends Bicicleta { + // (Velocípedes são bicicletas com rodas dianteiras grandes + // Elas não possuem catraca.) + + public Velocipede(int ritmoInicial, int velocidadeInicial){ + // Chame o construtor do pai (construtor de Bicicleta) com o comando super. + super(ritmoInicial, velocidadeInicial, 0, "PennyFarthing"); + } + + // Você pode marcar um método que você está substituindo com uma @annotation + // Para aprender mais sobre o que são as annotations e sua finalidade + // dê uma olhada em: http://docs.oracle.com/javase/tutorial/java/annotations/ + @Override + public void setEquipamento(int catraca) { + catraca = 0; + } + +} + +``` + +## Leitura Recomendada + +Os links fornecidos aqui abaixo são apenas para ter uma compreensão do tema, use o Google e encontre exemplos específicos. + +Outros tópicos para pesquisar: + +* [Tutorial Java para Sun Trail / Oracle](http://docs.oracle.com/javase/tutorial/index.html) + +* [Modificadores de acesso do Java](http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html) + +* [Coceitos de Programação Orientada à Objetos](http://docs.oracle.com/javase/tutorial/java/concepts/index.html): + * [Herança](http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html) + * [Polimorfismo](http://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html) + * [Abstração](http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html) + +* [Exceções](http://docs.oracle.com/javase/tutorial/essential/exceptions/index.html) + +* [Interfaces](http://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html) + +* [Tipos Genéricos](http://docs.oracle.com/javase/tutorial/java/generics/index.html) + +* [Conversões de código Java](http://www.oracle.com/technetwork/java/codeconv-138413.html) + +Livros: + +* [Use a cabeça, Java] (http://www.headfirstlabs.com/books/hfjava/) |