Existe alguma diferença entre essas duas declarações?
-
06-07-2019 - |
Pergunta
-
float ff = 1.2f;
-
Float fo = new Float(1.2f);
-
double fg = 3.2d;
-
Double fh = new Double(2.1d);
Posso utilizar '=' entre o (1) e (3) ou entre o (2) e (4) ??
Solução
Sim.
- Faz um tipo simples de idade dados (AKA um tipo primitivo) chamado "float".
- 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á
- "possível perda de precisão" mensagem se você tentar
ff = fg
. - "tipos incompatíveis" se você tentar
fo = fh
. -
fg = ff
vai funcionar bem (os ajustes de flutuação em um duplo). -
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.
-
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.
-
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.