Такая конструкция
int pages ;
if (pages = null) {
pages = 25;
} else {
pages = Integer.parseInt(request.getParameter("pages"));
}
выдает ошибку в строке if (pages = null) { из-за несовпадения типов:
incompatible types: <null> cannot be converted to int
incompatible types: int cannot be converted to boolean
Есть ли возможность сравнить целое число на значение null, или я пишу глупость?
Если вам нужно исправить код, то это будет так.
(исправленный исходный код от автора)
int pages;
if (pages == 0) {
pages = 25;
} else {
pages = request.getParameter();
}
Integer integer = pages;
int - это примитивный тип данных, поэтому нужно его сравнивать не с null, а 0. Так как в примитивных типах хранятся не ссылки на область в памяти, где лежат объекты, а сами значения.
Может вам по началу будет удобно запомнить: все примитивные типы начинаются с маленькой буквы (boolean, int, double, float), а ссылочные с большой.
(исправленный исходный код из комментариев) - спасибо pavlofff
Integer pages;
try{
pages = Integer.parseInt(request.getParameter("pages"));
} catch (Exception e){
pages = 25;
}
Есть ли возможность сравнить целое число на значение null?
Нельзя. Примитивные типы не могут принимать значение null. Соответственно, сравнивать с null их нельзя.
Как вариант, можно привести число к объекту-обертке:
Integer pages = null;
if(pages == null) {
...
Приведение к null — не единственная проблема в Вашем примере:
pages — локальная переменная, то компилятор не даст ее использовать до того как ей присвоено значение, если же pages — поле класса, то ему будет присвоено значение по умолчанию — 0;==, Вы же пытаетесь присвоить pages значение и результат присвоения использовать в качестве аргумента if. Т.к. if принимает буллево значение, это приводит ко второй ошибке.Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости