Какая разница между булевыми и булевыми в Java?

Я хотел бы понять разницу между типами Boolean и Boolean в Java, в частности, поскольку они относятся к GWT. Я знаю, что методы не поддерживаются, но я хочу получить дополнительную информацию, если она доступна.

Ответ 1

Я не уверен, что фактор GWT имеет значение, но в целом:

boolean - это примитивный тип java, тогда как Boolean - тип объекта/ссылки, который обертывает логическое

Преобразование между примитивами и объектами, подобными этому, известно как бокс/распаковка.

Подробнее:

http://javaeye.wordpress.com/2008/06/17/boxing-and-unboxing-conversion/

Почему бокс вы спрашиваете?

http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html

http://www.javapractices.com/topic/TopicAction.do?Id=197

Ответ 2

Это довольно просто и то же самое для GWT и Java:

  • boolean может быть да или нет
  • Булевы могут быть да, нет или NULL.

Итак, если вам не нужен NULL (например, если вы загружаете поле из базы данных, и вы хотите, чтобы NULL отличался от false), тогда придерживайтесь логического значения.

Ответ 3

В Java a boolean является литералом true или false, а boolean является оберткой объекта для boolean.

Существует редкость использовать boolean над a boolean, за исключением случаев, когда требуется ссылка на объект, например, в List.

boolean также содержит статический метод parseBoolean(String s), о котором вы уже знаете.

Ответ 4

Java имеет примитивные типы (int, boolean, float и т.д.) и в любое время, когда вы хотите использовать их как экземпляр объекта, который они обернули в ассоциированный тип класса. Например, booleans обертываются Booleans, int как Integer и т.д.

Он также имеет свои преимущества. boolean не имеет вспомогательных методов (поскольку это не класс), но Boolean делает. Итак, если вы хотите преобразовать строку в логическое значение, вы можете попробовать Boolean.valueOf( "true" ).

Надеюсь, что это поможет.

Ответ 5

Поскольку Boolean может быть нулевым, его можно использовать для ленивой загрузки.

if(hasRoots == null){
   calculateRoots();
}

Ответ 6

Что касается GWT, они одинаковы в GWT, как есть в java.
boolean является примитивным и Boolean в обертке объекта.

Ответ 7

В соответствии с документами эмуляции GWT JRE (http://code.google.com/webtoolkit/doc/1.6/RefJreEmulation.html) эти методы поддерживаются в булевом типе: Boolean (boolean), Boolean (String), parseBoolean (String), toString (boolean), valueOf (boolean), valueOf (String), booleanValue(), compareTo (Boolean), equals (Object), hashCode(), toString ( )

относительно разницы между булевыми и булевыми типами объектов. Булевы объекты могут быть в трех состояниях, поэтому это не совсем то же самое. Но если это имеет значение в GWT (с точки зрения производительности), у меня нет подсказки, я предполагаю, что это не имеет большого значения, поскольку компилятор GWT оптимизирует код, и большинство операций могут просто сопоставляться с исходными логическими операциями javascript.

Но, как обычно: убедитесь, что вы должны измерить (и учитывать, что это может отличаться в зависимости от того, какой браузер/версия вы измеряете).

Тип типа Boolean обычно не используется очень часто, поскольку логический тип native более естественен (вам не нужно постоянно проверять значение null).

Ответ 8

boolean - это примитивный тип, тогда как Boolean - это класс-оболочка. Имена применяются для (int, Integer), (long, Long) и т.д. Классы Wrapper "обертывают" соответствующий примитивный тип данных в объект этого класса.

Они используются с коллекциями, поскольку примитивные типы недопустимы с коллекциями. Также использование классов-оболочек дает вам доступ ко многим методам, которые вы можете вызвать на этом объекте. Например, Класс обертки символов имеет такие методы, как:

isDigit() - определить, является ли символ цифрой. isLower() - чтобы определить, является ли символ строчным алфавитом. is Letter() - чтобы определить, является ли символ алфавитом.

мы не можем использовать вышеуказанные методы, если мы используем примитивный тип по сравнению с классом-оболочкой.