O Java é uma linguagem criada na década de 90 por uma equipe de desenvolvedores sob supervisão de James Gosling dentro da Sun Microsystems (que foi adquirida pela Oracle posteriormente). A intenção inicial do Java era prover uma linguagem completamente multiplataforma, já que a equipe acreditava que haveria uma convergência muito forte entre computadores e outros dispositivos, como geladeiras e TVs por exemplo.
A linguagem teve e tem uma adoção muito forte no mercado, estando entre as três linguagens mais utilizadas no mundo. A força da linguagem e da plataforma se justificam pelo seu aspecto multiplataforma, o tamanho e a força da comunidade envolvida e seu ambiente de execução de alta performance através das múltiplas implementações da JVM existentes.
Características de tipagem
O Java é uma linguagem de tipagem estática, ou seja, existe um sistema de tipos bem definido e que é validado durante o tempo de compilação do código. Para isso, é necessário definir tipos explícitos para as variáveis que são criadas.
Existem algumas vantagens atreladas à utilização de sistemas de tipos estáticos como: equívocos de tipagem geralmente são percebidos com mais facilidade, além de que os processos de refatoração tendem a ser mais a prova de equívocos. Se acaba sendo necessário trocar o tipo de um parâmetro de uma função, por exemplo, o código não irá compilar até que todos os locais que referenciam o método passem a especificar o tipo correto.
Mas também existem algumas desvantagens: linguagens com tipagem estática têm tendência a serem mais verbosas, já que você precisa sempre estar declarando os tipos das variáveis. Além disso, a tipagem estática pode passar uma falsa sensação de segurança em alguns cenários, ainda mais no caso de versões mais novas das linguagens, que geralmente trabalham com inferência de tipagem, que é o caso do Java.
Curso Java - Fundamentos
Conhecer o cursoTipos de dados padrões no Java
Por padrão, o Java possui em sua biblioteca padrão alguns tipos:
• Byte: um inteiro com valor 8 bits, onde seu intervalo de valores vai do -128 até o 127. É um dado leve, que ocupa pouco espaço em memória;
• Char: trata-se de um único caractere unicode de 16 bits. Seu intervalo de valores vai do ‘\u0000’ ou 0 até o valor máximo ‘\uffff’ ou 65535. É utilizado para armazenar caracteres de maneira isolada;
• Short: trata-se de um valor inteiro de 16 bits. Seu intervalo de valores vai do -32.768 até o 32.767;
• Int: trata-se de um valor inteiro de 32 bits. Suporta valores de -2.147.483.648 a 2.147.483.647;
• Long: define um valor inteiro de 64 bits. Suporta valores de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807;
• Boolean: é um dos tipos de dados mais simples, pois ele pode armazenar apenas dois valores: true (verdadeiro) ou false (falso). É empregado para realizar testes lógicos, dentro de estruturas de decisão e repetição, por exemplo.
• Float: trata-se de um tipo de dado de ponto flutuante de 32 bits. Isso quer dizer que ele permite armazenar valores decimais entre 6 e 7 casas. Porém, o armazenamento em memória pode não representar necessariamente o valor repassado. Por exemplo, um float definido com “0,001” pode acabar sendo armazenado como “0,00100001”, e isso não somente no Java, já que isso é decorrência dos pontos flutuantes em geral. Por isso, o tipo float não deve ser usado para operações que precisam passar por várias operações aritméticas, como no caso de sistemas financeiros. Isso porque, a primeira vista, essa imprecisão pode não impactar, mas na sequência de operações realizadas, estas imprecisões podem começar a aparecer nos resultados;
• Double: representa um ponto flutuante de 64 bits. Por isso, ele permite armazenar números de até cerca de 15 casas decimais. A observação para o tipo float também é válida para o tipo double: por ser um tipo de dado que é armazenado por aproximação de valores, ele não deve ser utilizado em operações que demandam precisão absoluta.
Regras de nomeação de variáveis
A fim de manter uma mínima padronização do código-fonte, o Java estabelece alguns padrões para a definição de nomes para as variáveis:
• Variáveis têm seu nome definido com a primeira letra minúscula. Caso se trate de um nome composto, a primeira letra deve ser minúscula, enquanto as outras devem ser maiúsculas. Espaços não podem ser utilizados no meio dos nomes das variáveis;
• As variáveis não devem contar com caracteres especiais em seu nome. As únicas exceções são o underline (_) e o cifrão ($) em algumas situações, como na definição de estruturas estáticas;
• Os nomes devem ser declarativos e auto-explicativos;
• As variáveis são case-sensitive. Isso quer dizer que “nomeDoAutor” é diferente de “nomeDoautor”, de “NomeDoAutor” e de “nomedoautor”, por exemplo.
As variáveis abaixo seguem as convenções de nomenclatura:
static int MAIORIDADE_PENAL = 18; // trata-se de um atributo estático
String nomeDoAluno = “”;
int idade = 0;
As variáveis abaixo ferem algumas das convenções:
int a = 0; // nome não muito claro
String NomeDaPessoa = “”; // variável começando com letra maiúscula
int _tamanhoDaPessoa = 0; // nome de variável começando com caractere especial.
Java e as constantes
Constantes, sob um ponto de vista prático são como variáveis, só que com o ponto de que seu valor não pode ser modificado. Isso quer dizer que, se você declara uma constante chamada MAIORIDADE_PENAL com o valor 18, esse valor não poderá ser jamais modificado durante a execução da aplicação.
O Java não possui formalmente o conceito de constantes, assim como acontece em outras linguagens como C# e C++. Embora a palavra-chave “const” seja uma palavra reservada na especificação do Java (ou seja, você não pode nomear nenhuma estrutura como “const”), ela não tem nenhum significado para o compilador. Isso foi uma decisão de design durante a criação do Java. Isso tem relação com a maneira como o Java lida com a referência com as variáveis, as definindo entre value-types e reference-types.
A maneira mais comum para “simular” constantes no Java é através da combinação das palavras-chave static e final.
public static final int MAIORIDADE_PENAL = 18;
Neste exemplo:
• O static faz com que a variável em questão, de maneira prática, não esteja “amarrada” a um objeto. É como se ela, apesar de estar dentro de uma classe por convenções da linguagem, na verdade não pertencesse somente ao escopo daquela classe. Em termos mais profundos, isso implica até mesmo na localização na memória onde a variável é armazenada (nas versões mais novas da JVM, atributos estáticos ficam em uma área de memória chamada metaspace);
• O final indica basicamente que o conteúdo da variável não pode ser modificado (aqui, o aspecto de constante é definido), porém, isso obriga a inicialização da variável junto com sua definição.
Se você quer conhecer mais sobre essa linguagem, não se esqueça de acessar nosso Guia da linguagem Java. Te esperamos lá :)