Pergunta

  1. float ff = 1.2f;
  2. Float fo = new Float(1.2f);
  3. double fg = 3.2d;
  4. Double fh = new Double(2.1d);

Posso utilizar '=' entre o (1) e (3) ou entre o (2) e (4) ??

Foi útil?

Solução

Sim.

  1. Faz um tipo simples de idade dados (AKA um tipo primitivo) chamado "float".
  2. Faz um objeto Java chamado Float que mantém esse valor que passa a ser idêntico ao (1)

Respondendo às perguntas de edição:

Você verá

  1. "possível perda de precisão" mensagem se você tentar ff = fg.
  2. "tipos incompatíveis" se você tentar fo = fh.
  3. fg = ff vai funcionar bem (os ajustes de flutuação em um duplo).
  4. fh = fo ainda vai dar-lhe um "tipos incompatíveis".

Outras dicas

Sim, 2 cria um objeto.

Sim, primeiro é um tipo primitivo ea segunda é uma classe de boxe que envolve capacidades do tipo float primitiva, precisamos segunda, por exemplo, para uso nas coleções. Antes de ter tido que lidar muito com a conversão de tipo (acho até Java 1.5) agora a existência de classes wrappers leva essas capacidades. Mais Informações. aqui

Sim. O primeiro declara uma variável do tipo float primitivo e inicializa-lo a 1,2.

Enquanto o segundo declara uma variável do tipo de referência Float, cria um objecto de tipo Float e depois atribui uma referência para a variável.

novo Float (1.2f) cria um new Float objeto de cada vez, consumindo memória.

Se você usar o método de fábrica Float.valueOf (1.2f) JVM podem reutilizar as instâncias de objectos existentes flutuador para o mesmo valor. Ele poderia criar uma nova instância do objeto somente se não houver já uma instância Float com o mesmo valor.

Normalmente, você vai querer usar Float.valueOf (1.2f) em vez de nova Float (1.2f).

Além disso, note que os primitivos e objetos funcionam de forma diferente com o operador iguais == .

float x1 = 1.2f;
float x2 = 1.2f;

x1 == x2  // true

Float f1 = new Float(1.2f);
Float f2 = new Float(1.2f);

f1 == f2 // false

Sim tipos primitivos não pode ser NULL, os objetos podem. Além disso, o objecto do flutuador tem um grupo de funções de utilidades úteis ligadas a ele.

  1. Com esta declaração você tem um tipo float primitivo e lhe é atribuído um valor. tipo primitivo é um tipo de dados que é composto de nenhum outro tipo de dados e não pode ser furthur split (para explicá-lo simplesmente). primitivo é geralmente um tipo interno.

  2. Neste caso, você criou um objeto e, internamente, ele consiste em tipos de dados menores e também contém métodos.

diferença principal entre o tipo de flutuador primitivo e tipo de objecto é a primitiva é simplesmente um formato para os dados e não tem propriedades ou métodos.

3 = 1 irá funcionar bem, o descanso não.

Em aplicações reais eu sugiro que você não utilizar float ou Float, não é muito preciso e quase nunca a solução certa, uso duplo ou de casal em vez.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top