terça-feira, 24 de setembro de 2013

Comandos de repetição: while, do while.

Utilizamos comandos de repetição para determinar de forma lógica quantas vezes desejamos executar um bloco de instruções.

While:

Sintaxe:
while (condição booleana){
            //comandos
}
while (condição booleana)
            //único comando;
Vamos à prática:

Do While:

O comando de repetição while, difere do comando do while, pois o bloco de código escrito para o laço do while, é executado pelo menos uma vez, mesmo que a condição do while seja falsa.
Sintaxe:
do {
            // Conjunto de instruções
}while (condição booleana);
do
            //uma única instrução
while(condição booleana);
Vamos à prática:


Até o próximo post.

sábado, 21 de setembro de 2013

Controle de fluxo: switch

Utilizamos comandos condicionais para controlar o fluxo que nosso programa deve seguir. Uma instrução switch funciona como vários if, elseif, sendo que, neste caso, é utilizado uma variável e para cada case é feito uma comparação.
Sintaxe:
switch(<variavel>){
            case <valor> : //faça algo
            case <valor> : //faça algo
            case <valor> : //faça algo
            default <valor> : //faça algo
}
A variável a ser avaliada no case deve ser um tipo char, byte, short ou int, sendo necessário ter o tipo compatível com o tipo da variável passada no switch.
Quando um case verdadeiro é encontrado, o programa segue executando até que seja encontrado uma instrução break, ou seja o fim do bloco switch.

Vamos à prática:

Executando com dia da semana = 1:

Executando com dia da semana = 6:

Opa não era isso que queria? Isso aconteceu porque ao chegar 21 é encontrado o case que será executado porem dentro do bloco de instruções deste case não existe o comando break e o código segue executando até o fim do switch, para resolver adicione o comando break após as linhas 24 e 27.

Execute novamente:

Até porque você não vai querer que os dias de festejar passem rápidos.


Até o próximo post.

sexta-feira, 20 de setembro de 2013

Controle de Fluxo: if, else

Utilizamos comandos condicionais para controlar o fluxo que nosso programa deve seguir. Uma instrução if deve sempre avaliar uma variável ou retornar um valor true.
Sintaxe:
If (<expressão boleana ou variável boleana>){
}
Este é um exemplo de uma sintaxe de if simples pode ser “traduzido” para:
se (<expressão booleana ou variável boleana> = verdadeiro) {
faça isso
}
Muitas vezes necessitamos que algo seja executado quando a expressão avaliada não for verdadeira para isso utilizamos o else.
Sintaxe:
If (<expressão boleana ou variável boleana>){
}else {
}
Este é um exemplo de uma sintaxe de if pode ser “traduzido” para:
se (<expressão booleana ou variável boleana> = verdadeiro) {
faça isso
}senão {
            faça isso
}
Diferente de outras linguagens no Java else if é escrito separadamente:
If (<expressão boleana ou variável boleana>){
}else if(<expressão boleana ou variável boleana>){
}else {
}
Este é um exemplo de uma sintaxe de if pode ser “traduzido” para:
se (<expressão booleana ou variável boleana> = verdadeiro) {
faça isso
}senão se (<expressão booleana ou variável boleana> = verdadeiro) {
            faça isso
}senão {
}

Vamos à prática:

class ControleFluxoIf{
       public static void main(String args[]){
             boolean meuBolean = true;        
             if (meuBolean){
                    System.out.println("If mais simples do mundo!");
             }           
             if (20 == 20){
                    System.out.println("20 == 20");
             }           
             if (20 == 20 && 20 == 30){
                    System.out.println("20 == 20 e 20 == 30");
             }else {
                    System.out.println("20 != 20 ou 20 != 30");
             }           
             if (20 == 20 && 20 == 30){
                    System.out.println("20 == 20 e 20 == 30");
             }else if(20 == 20) {
                    System.out.println("20 == 20");
             }else if(20 == 30) {
                    System.out.println("20 == 30");
             }else {
                    System.out.println("20 != 20 ou 20 != 30");
             }
       }
}


Até o próximo post.

quinta-feira, 19 de setembro de 2013

Operador Ternário: ?


O operador ternário é um modo de fazer um teste condicional simples substituído o if. Exemplo:
            int meuInt = 2;
int  meuIntB = 3;
int meuIntC = 4;
meuInt = meuIntB>meuIntC ? meuIntB : meuIntC;
A expressão que fica ao lado esquerdo do ? é avaliada (meuIntB>meuIntC), se meuIntB  maior que meuIntC então meuInt = meuIntB senão meuInt é igual meuIntC, está operação poderia ser substituída por:
            if (meuIntB>meuIntC){
                        meuInt = meuIntB;
            }else {
                        meuInt = meuIntC;
            }

Vamos à prática:

class OperadorTernario{
            public static void main(String args[]){
                        int meuInt = 2;
                        int meuIntB = 3;
                        int meuIntC = 4;
                        meuInt = meuIntB>meuIntC ? meuIntB : meuIntC;                 
                        System.out.println("meuInt = " + meuInt);                      
                        String retorno;
                        int meuPrimeiro = 20;
                        int meuSegundo = 23;                   
                        retorno = (meuPrimeiro % 2 == 0) ? "Par" : "Impar";
                        System.out.println("meuPrimeiro e " + retorno);                      
                        retorno = (meuSegundo % 2 == 0) ? "Par" : "Impar";                                                  System.out.println("meuSegundo e " + retorno);
}
}



Até o próximo post.

Operadores de Atribuição: =, +=, -=, *=, /= e %=


Operadores de atribuição são operadores que atribuem (obvio) novos valores as variáveis ou expressões. Existem dois tipos de atribuições:
            - Atribuição simples. x = 7;
            - Atribuição composta. x += 7 é igual a x = x +7;
              A atribuição composta incrementa o valor da variável x por exemplo com o operando ou expressão do lado direito  + 7. O operando composto funciona para muitos outros operadores tais como:
-= Subtração
            += Adição
            *= Multiplicação
            /= Divisão
            %= Resto

Vamos à prática:

class OperadorAtribuicao{
            public static void main(String args[]){
                        int meuInt = 10;
                        System.out.println("Valor Atual de meuInt: " + meuInt);        
                        //Atribuido + 5
                        meuInt += 5; // = meuInt = menuInt + 5;
                        System.out.println("Valor de meuInt += 5: " + meuInt);
                        //Subtraindo + 5
                        meuInt -= 5; // = meuInt = menuInt - 5;
                        System.out.println("Valor de meuInt -= 5: " + meuInt);
                        //Multiplicando * 5
                        meuInt *= 5; // = meuInt = menuInt * 5;
                        System.out.println("Valor de meuInt *= 5: " + meuInt);
                        //Dividindo / 5
                        meuInt /= 5; // = meuInt = menuInt / 5;
                        System.out.println("Valor de meuInt /= 5: " + meuInt);
                        //Resto % 5
                        meuInt %= 3; // = meuInt = menuInt % 3; Mudei para 3 para dar um resto se fosse 5 daria 0 porque 10\5 = 2 sem sobras
                        System.out.println("Valor de meuInt %= 3: " + meuInt);
            }
}


Até o próximo post.

terça-feira, 17 de setembro de 2013

Operadores lógicos AND(&&, &), OR(||,|) XOR(^)

Operadores lógicos são operadores utilizados quando existe a necessidade de se comparar mais de uma condição.
Estes operadores são aplicáveis somente entre operadores booleanos.
Quando utilizamos estes operadores é sempre realizada uma avaliação da primeira condição. Caso este resultado seja conhecido, a avaliação da segunda condição não será realizada.
AND(&&)
Se uma das condições for false, o resultado de AND será falso. Então, caso a primeira condição seja falsa a segunda condição não será avaliada.
Exemplo:
boolean meuBooleanAnd1 = 1==2 && 2==2;// retorna falso na primeira condição e não realiza a segunda. Tem como resultado false.
OR(||)
Se uma das condições for verdadeira, então o resultado do OR será verdadeiro. Então, caso a primeira instrução seja verdadeira a segunda não será avaliada.
Exemplo:
boolean meuBooleanOr1 = 1==1 || 2==1; retorna true na primeira condição e não realiza a segunda. Tem como resultado false.
Vamos à prática:
class OperadorLogicosAndOr{
            public static void main(String args[]){     
                        boolean meuBooleanAnd1 = 1==2 && 2==2;
                        boolean meuBooleanOr1 = 1==1 || 2==1          
                        System.out.println("meuBooleanAnd1 " + meuBooleanAnd1);
                        System.out.println("meuBooleanOr1 " + meuBooleanOr1);  
            }
}


Operadores bit a bits (&, ^ e |)

Operadores de bits são aplicáveis a tipos inteiros e booleanos.
O resultado de uma operação entre bits é calculado comparando-se os operadores de bit.
& AND
Diferentemente do && o & compara bit a bit e no caso do & sempre é avaliado a segunda expressão mesmo a primeira sendo false.
Exemplo:
boolean meuBoolean1 = 1==2 & 1==1; retorna false na primeira expressão, mas mesmo assim executa a segunda. Resultado final false;
| OR
Diferentemente do || o | compara bit a bit e no caso do | sempre é avaliado a segunda expressão mesmo a primeira sendo true.
Exemplo:
boolean meuBoolean2 = 1==1 | 1==2; retorna true na primeira expressão, mas mesmo assim executa a segunda. Resultado final true;
^ XOR
O XOR conhecido como eXclusive Or faz com que uma expressão seja true somente se e somente um dos lados for verdadeiro.
Exemplo:
boolean meuBoolean3 = 1==1 ^ 1==2; retorna true na primeira expressão, e false na segunda dando como resultado final true;
boolean meuBoolean4 = 1==1 ^ 1==1; retorna true na primeira expressão, e true na segunda dando como resultado final false; O XOR só permite que uma expressão seja verdadeira e as outras falsas.
Vamos à prática:
class OperadorBits{
            public static void main(String args[]){
                        boolean meuBoolean1 = 1==2 & 1==1;
                        boolean meuBoolean2 = 1==1 | 1==2;
                        boolean meuBoolean3 = 1==1 ^ 1==2;
                        boolean meuBoolean4 = 1==1 ^ 1==1;             
                        System.out.println("meuBoolean1 " + meuBoolean1);
                        System.out.println("meuBoolean2 " + meuBoolean2);
                        System.out.println("meuBoolean3 " + meuBoolean3);
                        System.out.println("meuBoolean4 " + meuBoolean4);           
            }
}



Até o próximo post.

domingo, 15 de setembro de 2013

Operador de Comparação de Tipo: instaceof

O operador de comparador de tipo instaceof verifica se um determinado objeto é uma instancia de uma determinada classe. O operador da esquerda deve ser uma variável do tipo reference, portanto não pode ser uma variável de tipo primitivo, enquanto o operador da direita deve ser uma class, interface ou um tipo array.

Vamos à prática:

class OperadorComparacaoTipos{
            public static void main(String args[]){     
                        String nome = "Diego";
                        Object objeto = new Object();
                       
                        boolean resutado1 = nome instanceof String;
                        boolean resutado2 = objeto instanceof Object;
                        boolean resutado3 = objeto instanceof String; 
                       
                        System.out.println(nome + " instanceof  String " + resutado1);
                        System.out.println(objeto + " instanceof  Object " + resutado2);
                        System.out.println(objeto + " instanceof  Object " + resutado3);                   
            }
}


Até o próximo post.


            

Operadores de Comparação

Operadores de comparação são amplamente utilizados na comparação de dois tipos primitivos tendo como retorno um boolean (true ou false).
            - < menor que
            - > maior que
            - <= menor ou igual que
            - >= maior ou igual que
            - == igual
            - != diferente

Vamos à prática:

class OperadorComparacao{
            public static void main(String args[]){     
                        int numero1 = 120;
                        int numero2 = 140;
                        byte numero3 = (byte)120;
                                              
                        boolean resutado1 = numero1 < numero3;
                        boolean resutado2 = numero1 > numero3;
                        boolean resutado3 = numero1 <= numero3;
                        boolean resutado4 = numero1 >= numero3;
                        boolean resutado5 = numero1 == numero3;
                        boolean resutado6 = numero1 != numero3;
                        boolean resutado7 = numero2 <= numero3;
                        boolean resutado8 = numero3 != numero2;
                       
                        System.out.println(numero1 + " < " + numero3 + " " + resutado1);
                        System.out.println(numero1 + " > " + numero3 + " " + resutado2);
                        System.out.println(numero1 + " <= " + numero3 + " " + resutado3);
                        System.out.println(numero1 + " >= " + numero3 + " " + resutado4);
                        System.out.println(numero1 + " == " + numero3 + " " + resutado5);
                        System.out.println(numero1 + " != " + numero3 + " " + resutado6);
                        System.out.println(numero2 + " <= " + numero3 + " " + resutado7); 
                        System.out.println(numero3 + " != " + numero2 + " " + resutado8);
                       
            }
}

Até o próximo post.


            

Operadores aritméticos: soma(+), divisão(-), multiplicação(*), divisão(/) e resto(%)

Operadores aritméticos são operadores aplicados a dois ou mais números inteiros ou números de ponto flutuante.

Soma e subtração: + e -

Java não permite a sobrecarga de operadores. No entanto a própria linguagem sobrecarregou o + para quando aplicado em uma String fizesse concatenação.
O operador + quando aplicado a dois ou mais números inteiros ou de ponto  flutuante, tem a função de somar estes números.
Exemplo:
int minhaSoma = 20 + 8; // Resultado 28
O operador - quando aplicado a dois ou mais números inteiros ou de ponto  flutuante, tem a função de subtrair estes números.
int minhaSubtracao = 20 – 8; // Resultado 12

Multiplicação e divisão: * e /

Os operadores de multiplicação são aplicáveis a todos os tipos primitivos numéricos.
Existem algumas limitações impostas pela representação numérica do computador. Estas limitações ocorrem para todos os formatos numéricos, do byte ao double, mas são mais notáveis para os inteiros.
Se você multiplicar ou dividir dois inteiros, o resultado será calculado usando a aritmética de inteiros. Se o resultado for maior que o maior numero que pode ser armazenado o resultado final não fara sentido
O operador * quando aplicado a dois ou mais números tem a função de multiplicar estes números.
Exemplo:
int minhaMultiplicacao = 20 * 8; // Resultado 160
byte minhaMultiplicacao2 = (byte)20 * (byte)20; // O compilador informara um possível erro de precisão sendo necessário transformar a variável byte minhaMultiplicacao2 em int.
O operador - quando aplicado a dois ou mais números tem a função de dividir estes números.
int minhaDivisao = 20 / 8; // O resultado seria resultado 2.5 porem como estamos armazenando em um int o resultado será 2 porque 2.5 deveria ser armazenado em um float ou double;
int float minhaDivisaoF = 20f / 8f; // Faz o cast para os valores 20 e 8 serem considerados do tipo float e guarda o resultado em uma variável float o qual o resultado será 2.5;

Resto da divisão: %

O operador % quando aplicado a dois ou mais números inteiros ou de ponto  flutuante, tem a retornar o resto da divisão destes números.
Exemplo:
int meuResto = 20 % 8; // Resultado 4
Porque 4 se o resultado da divisão é 2,5?
O que acontece aqui é simples o sistema divide 20/8 da seguinte maneira (voltando ao ensino fundamental) :
Quantas vezes 8 cabe dentro de 20?
            2x é a resposta certa porque 2 x 8  = 16
Quanto é 20 – 16?
            4 opa aqui esta o nosso resultado.
Resumindo é feito uma divisão direta ou seja divide um numero pelo outro e o que sobra não dividido novamente, o que sobra é chamado de resto.
Outros exemplos:
int meuResto2 = 20 % 3; // O resultado será 2 porque 3 * 6 = 18 e 20 – 18 é 2.
int meuResto3 = 20 % 5; // O resultado será 0. Porque 5 * 4 = 20 e 20 – 20 é 0;



Concluindo sugiro que sempre que trabalhar com divisão utilize float ou double para não ter perda de precisão e não se esqueça de fazer o cast dos valores divididos para float((float)valor ou valorf)  ou double((double) valor).
Na multiplicação sempre tome cuidado com o possível resultado, pois a multiplicação de dois números do mesmo tipo pode resultar em numero que não cabe neste tipo.
Vamos à prática:
class OperadorAritimetico{
            public static void main(String args[]){     
                        int minhaSoma = 20 + 8;
                        int minhaSubtracao = 20 - 8;
                        int minhaMultiplicacao = 20 * 8;
                        int minhaMultiplicacao2 = (byte)20 * (byte)20;
                        int minhaDivisao = 20 / 8;
                        float minhaDivisaoF = 20f / 8f;
                        int meuResto = 20 % 8;
                        int meuResto2 = 20 % 3;
                        int meuResto3 = 20 % 5;
                       
                        System.out.println("minhaSoma = " + minhaSoma);
                        System.out.println("minhaSubtracao = " + minhaSubtracao);
                        System.out.println("minhaMultiplicacao = " + minhaMultiplicacao);
                        System.out.println("minhaMultiplicacao2=" + minhaMultiplicacao2);
                        System.out.println("minhaDivisao = " + minhaDivisao);
                        System.out.println("minhaDivisaoF = " + minhaDivisaoF);
                        System.out.println("meuResto = " + meuResto);
                        System.out.println("meuResto2 = " + meuResto2);
                        System.out.println("meuResto3 = " + meuResto3);                
            }
}



Até o próximo post.


            

sábado, 14 de setembro de 2013

Operadores Unários: Negação !, Pré e pós incremento ++, Pré e pós decremento --, Sinal positivo +, Sinal negativo -, Inversão de bits ~, Cast ()

Operadores unários são operadores que envolvem apenas um operando, tais como:
            - Negação !
            - Pré e pós incremento ++
            - Pré e pós decremento --
            - Sinal positivo +
            - Sinal negativo -
            - Inversão de bits ~
            - Cast ()

Operador de negação: !

É utilizado para inverter o valor de uma expressão booleana, ou seja uma expressão !true retorna false e uma expressão !false retorna true.
Vamos à prática:
class OperadorNegacao{
            public static void main(String args[]){     
                        boolean verdadeiro = true;
                        System.out.println("Verdadeiro = " + verdadeiro);
                        System.out.println("!Verdadeiro = " + !verdadeiro);
            }
}

Operador de incremento e decremento: ++,--

Estes operadores modificam o valor de uma expressão adicionando ou subtraindo 1. Os operadores de incremento e decremento podem ser:
            - Pós-fixados: O incremento ou decremento é feito após o uso da variável.
            - Pré-fixados: O incremento ou decremento é feito antes do uso da variável.
Vamos à prática:
class OperadorIncrementoDecremento{
            public static void main(String args[]){     
                        int incremento = 5;
                        int decremento = 8;
                        System.out.println("Pos-fixados:");
                        System.out.println("incremento atual=" + incremento);
                        System.out.println("incremento++=" + incremento++); // primeiro exibe na tela depois adiciona 1
                        System.out.println("depois do incremento=" + incremento);
                        System.out.println("-----------");
                        System.out.println("decremento atual=" + decremento);
                        System.out.println("decremento--=" + decremento--); // primeiro exibe na tela depois tira 1
                        System.out.println("depois do decremento=" + decremento);
                        //Neste momento a variavel incremento é igual a 6
                        //Neste momento a variavel decremento é igual a 7
                        System.out.println("");
                        System.out.println("Pre-fixados:");
                        System.out.println("incremento atual=" + incremento);
                        System.out.println("++incremento=" + ++incremento); // primeiro adiciona 1 e depois exibe na tela
                        System.out.println("depois do incremento=" + incremento);
                        System.out.println("-----------");
                        System.out.println("decremento atual=" + decremento);
                        System.out.println("--decremento=" + --decremento); // primeiro tira 1 e depois exibe na tela
                        System.out.println("depois do decremento=" + decremento);
            }
}

Operadores de representação de sinal: + e -

Os operadores unários + e – representam positivo e negativo respectivamente. O operador + não tem outra função a não ser deixar explicito que um numero é positivo (O operador mais quando utilizando com Strings serve como concatenação e quando utilizado com dois números como soma, porem para este tópico ele serve apenas para deixar explicito que um numero é positivo).
Exemplo:
int numeroNegativo = -12;
int numeroPositivo = +12; // numeroPositivo = 12 seria exatamente igual.

Operador de inversão: ~

Conhecido como Bitwise Inversion Operator (operador de inversão de bits) converte todos os bits 1 em 0 e todos os 0 em 1.
Exemplo:
int numeroInvertido = ~7 è numeroInvertido = 7 + 1 invertendo o sinal = - 8
int numeroInvertido = ~-20 è numeroInvertido = -20+1 invertendo o sinal = 19

Operador de conversão: Cast

O operador cast é utilizado para uma conversão explicita em uma expressão:
            - Cast pode ser aplicado para trocar tipos de valores primitivos.
            - Cast pode ser aplicado em referencia a objeto.
Existem dois tipos de cast:
            - Cast explicito:
                        Quando queremos que uma variável de tipo maior seja convertida em um tipo menor. Exemplo quando queremos que double seja convertido em um byte, se não fizermos o cast explicitamente teremos um erro de compilação.
            - Cast automatico:
                        Não precisamos fazer o cast explicito ou seja quando uma variável cabe em outra. Exemplo quando queremos colocar um byte em um short.
Agora como saber que uma variável cabe em outra? Abaixo segue uma ordem da esquerda para direita:
byte è short ou char è int è long è float è double
Ou seja um byte sempre cabe em um short, um short sempre cabe eu um int ou em um char e assim por diante, para estes casos podemos utilizar o cast automático, porem caso você queira colocar um int em short devera usar o cast explicito onde você estará informando ao compilador “Ei eu sei o que estou fazendo este valor de int cabe em short”. TENHA CERTEZA DO QUE ESTA FAZENDO, POIS O COMPILADOR IRÁ REMOVER OS BITS DO VALOR O QUE ACARRETARA EM UMA PERDA DE PRECISÃO.
Vamos à prática:
class OperadorConversao{
            public static void main(String args[]){                            
                        byte meuByte = 123;
                        short meuShort = 1234;
                        int meuInt = 12345;
                        char meuChar = 'd';
                        long meuLong = 123456;
                        float meuFloat = 12.4567f; // adicionado o f para forçar float caso não coloque é considerado um double
                        double meuDouble = 123.456785;
                        System.out.println("Valores Atuais:");
                        System.out.println("meuByte = " + meuByte);
                        System.out.println("meuShort = " + meuShort);
                        System.out.println("meuChar = " + meuChar);
                        System.out.println("meuInt = " + meuInt);                     
                        System.out.println("meuLong = " + meuLong);
                        System.out.println("meuFloat = " + meuFloat);
                        System.out.println("meuDouble = " + meuDouble);
                       
                        System.out.println("Cast automatico:");
                        meuShort = meuByte; // meuByte e menor meuShort cast automatico
                        meuInt = meuShort; // meuShort e menor meuInt cast automatico
                        meuLong = meuInt; // meuInt e menor meuLong cast automatico
                        System.out.println("meuShort = " + meuShort);
                        System.out.println("meuInt = " + meuInt);
                        System.out.println("meuLong = " + meuLong);
                       
                        System.out.println("Cast Explicito:");
                        meuFloat = (float)meuDouble; // Double é maior que float por isso é necessario informar ao compilado "Ei sei o que estou fazendo! O valor da minha variavel double vai caber no float"
                        meuLong = 1231312312;
                        meuInt = (int)meuLong;
                        meuShort = (short)meuInt;
                        System.out.println("meuFloat = " + meuFloat);
                        System.out.println("meuLong = " + meuLong);
                        System.out.println("meuInt = " + meuInt);
                        System.out.println("meuShort = " + meuShort); // perceba que o valor mostrado é totalmente diferente ou seja foi feito um cast erroneamente pois o valor de int não cabe no short.
                       
            }
}

Com isso finalizo o post de operadores unários e fica a dica: Tome cuidado com cast explicito tenha certeza do que esta fazendo pois pode ocorrer perda de precisão.

Até o próximo post.






terça-feira, 10 de setembro de 2013

Variáveis na Prática


O objetivo deste post é mostrar na prática o que foi explicado no post de variáveis na teoria.

Tipos primitivos:


class VariaveisPrimitivas{

            public static void main(String args[]){

                        boolean blnMeuBooleano = true;

                        boolean blnMeuOutroBooleano = false;

                        byte meuByte = (byte) 123;

                        short meuShort = (short) 1234;

                        int meuInt = 0;

                        char meuChar = 'd';
                        char meuCharAsc = 64;
                        char meuCharUnicode = '\u0000';
                        long meuLong = 921l;
                        float meuFloat = 10.28f;
                        double meuDouble = 12345678.97;
                       
                        System.out.println("blnMeuBooleano: " + blnMeuBooleano);
                        System.out.println("blnMeuOutroBooleano: " + blnMeuOutroBooleano);
                        System.out.println("meuByte: " + meuByte);
                        System.out.println("meuShort: " + meuShort);
                        System.out.println("meuInt: " + meuInt);
                        System.out.println("meuChar: " + meuChar);
                        System.out.println("meuCharAsc: " + meuCharAsc);
                        System.out.println("meuCharUnicode: " + meuCharUnicode);
                        System.out.println("meuLong: " + meuLong);
                        System.out.println("meuFloat: " + meuFloat);
                        System.out.println("meuDouble: " + meuDouble);
            }
}

Tipos primitivos:


class VariaveisReference{

            public static void main(String args[]){

                        String minhaString = new String();

                        String minhaString2 = "Teste";

                        Object meuObjeto = new Object();

                        Object meuObjeto2 = null;            

                        System.out.println("minhaString: " + minhaString);

                        System.out.println("minhaString2: " + minhaString2);
                        System.out.println("meuObjeto: " + meuObjeto);
                        System.out.println("meuObjeto2: " + meuObjeto2);    
            }
}

Variáveis locais:


class VariaveisLocais{

            public static void main(String args[]){

                        //variavel local meuNome tipo String inicializado com Diego

                        String meuNome = "Diego";                    

                        //variavel local meuNumero tipo int inicializado com 123

                        int meuNumero = 123;                  

                        //variavel local meuNumero2 tipo int não inicializado

                        int meuNumero2;                                       
                        System.out.println("meuNome: " + meuNome);
                        System.out.println("meuNumero: " + meuNumero);
                        System.out.println("meuNumero2: " + meuNumero2);
            }
}


Este erro ocorre porque variáveis declaradas dentro de métodos ou blocos de códigos devem ser inicializadas. Para este código funcionar devemos alterar o código:

int meuNumero2;   

Para:

            int meuNumero2 = 1234;

Escopo:


class VariaveisEscopo{

            public static void main(String args[]){

                        {

                                   //as variaveis declaradas dentro deste escopo não podem ser

                                   //acessadas de fora

                                   String meuNome = "Diego";

                        }                                                                    

                        System.out.println("meuNome: " + meuNome);                      
            }
}


Este erro de compilação ocorre porque estamos tentando acessar uma variavel que não esta no mesmo escopo. Para resolvermos Temos duas opções:

Colocar o print dentro das chaves da declaração da variável:

class VariaveisEscopo{

            public static void main(String args[]){

                        {

                                   //as variaveis declaradas dentro deste escopo não podem ser

                                   //acessadas de fora

                                   String meuNome = "Diego";
                                   System.out.println("meuNome: " + meuNome);
                        }          
            }
}
Colocar a declaração da variável no mesmo nível do print:
class VariaveisEscopo{
            public static void main(String args[]){
                                   String meuNome = "Diego";
                                   System.out.println("meuNome: " + meuNome);          
            }
}


Até o próximo post.