Подтвердить что ты не робот

Как проверить, установлена ​​ли переменная?

В PHP существует функция isset. Как насчет Java? Я думаю, что я могу использовать == null с объектами, но как насчет типов значений типа int

4b9b3361

Ответ 1

Компилятор Java не позволит вам определять переменные и использовать их до того, как им будет присвоено значение, поэтому проблема не существует в той же форме, что и в php.

ИЗМЕНИТЬ

Если в вашем случае компилятор не остановил вас (потому что это, например, переменная экземпляра), лучшим решением является, вероятно, инициализация переменной для некоторого "специального" значения, как предложено Guest11239193. Вот так:

int x = 0; // because by convention 0 is a reasonable default here

Конечно, какое "безопасное, разумное" значение инициализации зависит от приложения.

Впоследствии вы могли

if (x == 0) { // only allow setting if x has its initial value
    x = somenewvalue;
}

Или вы можете получить доступ к x через сеттер, который запрещает изменение более одного раза (возможно, в большинстве случаев может быть избыточным):

private int x;
private boolean x_was_touched = false;

public void setX (int newXvalue) {
    if (!x_was_touched) {
       x = newXvalue;
       x_was_touched = true;
    }
}

public int getX() {
    return x;
}

Вы также можете использовать брат Integer, int object, который может быть инициализирован нулевым

Integer x = null; 

Однако тот факт, что вы считаете, что вам нужны эти знания, может скрыть более глубокий логический недостаток в вашей программе, поэтому я бы посоветовал вам изучить причину, по которой вы хотите узнать, является ли примитивное значение (примитивный, в отличие от объектов, int vs Integer) не было затронуто.

Ответ 2

В Java не существует несуществующей переменной.

Ответ 3

В Java ошибка компилятора использовать переменную без установки.

Переменные класса и экземпляра инициализируются значением, которое считается значением по умолчанию "null", в зависимости от типа данных.

Так что функция типа isset не имеет смысла.

Ответ 4

Вы не можете проверить, установлена ​​ли переменная. Вы можете:

  • Инициализировать переменную, которая имеет смысл в качестве начального значения - такой 0 для счетчика, максимальное целочисленное значение, если вы вычисляете минимум и т.д.
  • Инициализировать переменную до значения, которое вы не собираетесь использовать, например -1, если вы собираетесь использовать целые значения без знака и пустую строку для строки.
  • Представьте логический флаг, указывающий, начали ли вы что-то делать.

Ответ 5

По умолчанию для int будет 0, а для string будет "".

Ответ 6

Вы можете попытаться использовать объект вместо примитивного значения, т.е.


Integer x = null;
...
public Integer getX(){
   if(x == null) {
      x = new Integer(10);
   }
   return x;
}

Ответ 7

Создайте свои функции для этого элемента управления, потому что у каждого объекта есть собственные правила о "isset() result";

Примеры:

    public static final boolean isEmpty(String x) {
        return (x == null || x.trim().equals(""));
    }
    public static final boolean isEmpty(Integer x) {
        return (x == null || x == 0);
    }
    public static final boolean isEmpty(Long x) {
        return (x == null || x == 0);
    }
    public static final boolean isEmpty(Collection<?> x) {
        return (x == null || x.size() == 0);
    }
    public static final boolean isEmpty(Map<?,?> x) {
        return (x == null || x.size() == 0);
    }
    public static final boolean isEmpty(Object[] x) {
        return (x == null || x.length == 0);
    }

Ответ 8

Наиболее распространенный случай использования неопределенного значения - это получение информации из источника данных. В любом конкретном запросе SQL у вас могут быть записи с целыми числами, значения которых равны 0, но которые также могут быть пустыми/пустыми полями. То же самое касается строк, где пустая строка '' не совпадает с неопределенной или нулевой строкой.

Похоже, что использование эталонных версий объектов нативных типов - единственное решение, которое вызывает сожаление, так как оно грязное. Альтернативой может быть сохранение логического значения для каждого отдельного поля данных, которое необходимо проверять и поддерживать вручную, что еще хуже.

Ответ 9

Целочисленная переменная, объявленная в Java, не может проходить условие для "undefined" или "null" Но используя wrapper class мы можем использовать его, т.е.: Integer a = null;

public class Solution {
    public static void main(String[] args) {
        Integer max = null; //works perfectly
        int max1 == null; //throws and incompatible error 
        if (max == null)
            System.out.println("null");
    }
}