Arquivo

Arquivo do Autor

Agora estamos em uma nova casa

Bueno xiruzada, migrei o blog para um servidor dedicado, a partir de 15/03/2011 não vou mais atualizar este blog, apenas o novo que está no endereço: Alison souza.

Categorias:Sem categoria

Treinamento interno

Depois de um longo período sem postar, agora voltando de férias segue as fotos do treinamento interno dos novos colaboradores da MV Passo Fundo:




Profissional versus Pára-quedista

No ano de 2010 fui convidado para participar de uma longa seleção de candidatos relacionados com a disponibilidade de oportunidades de empregos dentro de algumas das empresas que venho trabalhando. Mesmo minha responsabilidade sendo apenas a avaliação técnica dos currículos, fui convidado pelo setor de RH para presenciar todas as entrevistas e assim participar mais efetivamente da seleção. Unindo estes meses de inúmeras entrevistas com os meus dez aninhos na área que eu atuo, resolvi hoje escrever um pouco sobre minhas conclusões.

Depois de todas estas experiências somadas, pude perceber que se abriu uma clara visão de dois tipos de perfis que faz separação nítida entre os candidatos aspirantes de novas oportunidades encontrando no atual mercado de trabalho. O objetivo deste artigo é então levantar as determinadas características que constituem cada um destes tipos, fazendo com que cada leitor tenha condições de fazer sua auto-reflexão e chegar a suas próprias conclusões. Já vou adiantando que esta minha conclusão é bem critica, confrontadora e alguns aspectos polêmicos. Mas acredito que mesmo assim, ainda pode ajudar o leitor, independente de sua área.

Quero começar falando das características chaves do primeiro perfil que eu chamei carinhosamente de candidato “profissional”:

Continue lendo…

Variável Final

Declarar uma variável com a palavra-chave final impossibilita a reutilização dessa variável depois de ele ter sido inicializada com um valor explícito. Para primitivos, isso significa que, uma vez que a variável recebeu um valor, esse valor não poderá ser alterado. Por exemplo, se voçê atribuir 10 a uma variável int x, então x vai permanecer como 10 para sempre. Isso é bem simples para primitivos, mas o que significar ter uma variável de referência marcada como final não pode jamais ser reatribuída para referir-se a um objeto diferente. Os dados do objeto podem ser modificados, mas a variável de referência não pode ser modificada. Em outras palavras, uma referência final ainda lhe permite modificar o estado do objeto ao qual se refere, mas voçê não pode modificar a variável de referência para fazê-la se referir a um objeto diferente. Decore isto: não existe objetos final, apenas referência final.

Categorias:Java, SCJP Tags:, ,

Declaranções de Arrays

Em Java, os arrays são objetos que armazenam múltiplas variáveis do mesmo tipo, ou variáveis que são todas subclasses do mesmo tipo. Os arrays podem armazenar ou primitivos ou referência a objetos, mas o próprio array será sempre um objeto no heap, mesmo se oarray for declarado com tipos primitivos. Em outras palavras não existe um array primitivo, mas voçê pode declarar um array de primitivos.

Os arrays são declarados informando-se o tipo de elemento que o array irá armazenar, seguido por colchetes em um dos lados do identificador.

Declarando um Array de Primitivos:


int [ ] key; //Colchetes antes do nome (recomendado)

int key [ ]; //Colchetes depois do nome (válido, mas menos legível)

Declarando um Array de Referência a Objetos:


Thread [ ] threads; //Recomendado

Thread threads [ ]; //Válido, mas menos legível

Podemos declarar arrays multidimensionais, que, na verdade, são arrays de arrays.

Isso pode ser feito da seguinte maneira;


String [ ] [ ] [ ] nome;

String [ ] gerente [ ];

O primeiro exemplo é um array tridimensional, e o segundo é um array bidimensional.

Variáveis Locais (Automatic/Stack/Method)

Variáveis locais são aquelas declaradas dentro de um método. Isso significa que a variável não é apenas inicializada dentro do método, mas também declarada dentro dele. Assim como a variável local inicia a sua vida dentro do método, ela também é destruída quando o método finaliza. As variáveis locais ficam sempre na pilha, e não no heap. Embora o valor da variável possa ser passado para, digamos, outro método que não armazene o valor em uma variável de instância propriamente dita só vive dentro do escopo do método.


class Teste{

    public void login(){

    int count = 10;

}

    public void loginTest(int i){

        count = i;	//Não vai compilar! Não é possível acessar

                        //count de fora do método login()

    }

}

É possível declarar uma variável local como mesmo nome que uma variável de instância. Isso é conhecido como sombreamento, como o seguinte código demonstra:


class Teste{

    int count = 9;	//declara uma variável de instância

    public void login(){

        int count = 10; //Declara uma variável loca chamada de count

        System.out.println( count );

    }

    public void count(){

        System.out.println( count );

    }

    public static void main(String[] args){

        new Teste().login();

        new Teste().count();

    }
}

O código acima produz a seguinte saída:

10
9

Variáveis de Instâncias

As variáveis de instância são definidas dentro da classe, mas fora de qualquer método, e só são inicializadasquando a classe é instânciada. As variáveis de instâncias são os campos que pertencem a cada objeto único. Por exemplo, o seguinte código define campos (variáveis de instâncias) para nome, titulo e gerente para objetos Funcionário.


class Funcionario {

    private String nome;

    private String titulo;

    private String manager;

}

Variáveis de Instâncias:

  • Podem ser marcadas como final;
  • Podem ser marcadas como transient
  • Não podem ser marcadas como abstract
  • Não podem ser marcadas como sinchronized
  • Não podem ser marcadas como strictfp
  • Não podem ser marcadas como native
  • Não podem ser marcadas como static, porque se transformaria em variável de classe.

Modificadores de acesso Variáveis X Métodos:

Variáveis locais Variáveis (não locais) Métodos
final final final
  public public
  protected protected
  private private
  static static
  transient  
  volatile abstract
    synchronized
    strictfp
    native