Я хотел бы понять разницу между типами Boolean
и Boolean
в Java, в частности, поскольку они относятся к GWT.
Я знаю, что методы не поддерживаются, но я хочу получить дополнительную информацию, если она доступна.
Какая разница между булевыми и булевыми в Java?
Ответ 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
Ответ 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() - чтобы определить, является ли символ алфавитом.
мы не можем использовать вышеуказанные методы, если мы используем примитивный тип по сравнению с классом-оболочкой.