В PHP существует функция isset
. Как насчет Java? Я думаю, что я могу использовать == null
с объектами, но как насчет типов значений типа int
Как проверить, установлена ли переменная?
Ответ 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");
}
}