Есть ли разница между этими двумя утверждениями?

StackOverflow https://stackoverflow.com/questions/1008850

Вопрос

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

Могу ли я использовать знак «=» между (1) и (3) или между (2) и (4)??

Это было полезно?

Решение

Да.

  1. Создает простой старый тип данных (также известный как примитивный тип), называемый «float».
  2. Создает Java-объект с именем Float, содержащий значение, идентичное (1).

Отвечаю на вопросы редактирования:

Ты увидишь

  1. сообщение «возможная потеря точности», если вы попытаетесь ff = fg.
  2. «несовместимые типы», если попробовать fo = fh.
  3. fg = ff будет работать нормально (поплавок вписывается в двойной).
  4. fh = fo все равно выдаст вам «несовместимые типы».

Другие советы

Да, 2 создает объект.

Да, первый - это примитивный тип, а второй - класс бокса, который включает в себя возможности примитивного типа с плавающей запятой, нам нужен второй, например, для использования в коллекциях. Если раньше вам приходилось много заниматься преобразованием типов (я думаю, что до Java 1.5), то теперь наличие классов-оболочек использует эти возможности. Дополнительная информация. здесь

Да.Первый объявляет переменную примитивного типа float и инициализирует его до версии 1.2.

А второй объявляет переменную ссылочного типа Float, создает объект типа Float а затем присваивает ссылку на переменную.

new Float (1.2f) каждый раз создает объект new Float, занимая память.

Если вы используете фабричный метод Float.valueOf (1.2f) JVM может повторно использовать существующие экземпляры объекта Float для того же значения. Он может создать новый экземпляр объекта, только если еще не существует экземпляра Float с таким же значением.

Обычно вы хотите использовать Float.valueOf (1.2f) вместо нового Float (1.2f).

Также обратите внимание, что примитивы и объекты работают по-разному с оператором равенства == .

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

Да, примитивные типы не могут быть NULL, объекты могут. Также к объекту Float прикреплено множество полезных служебных функций.

<Ол>
  • С помощью этого объявления у вас есть примитивный тип float и ему присвоено значение. Примитивный тип - это тип данных, который не состоит из других типов данных и не может быть разделен в дальнейшем (пояснить это просто). примитив обычно является встроенным типом.

  • В этом случае вы создали объект, который внутренне состоит из меньших типов данных, а также содержит методы.

  • Основное различие между типом float и типом примитива заключается в том, что примитив представляет собой просто формат данных и не имеет свойств или методов.

    3 = 1 будет работать нормально, остальные не будут.

    В реальных приложениях я предлагаю вам не использовать float или Float, это не очень точное и почти никогда не правильное решение, вместо этого используйте double или Double.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top