Java проверка значения переменной

Содержание
  1. Как проверить тип переменной в Java?
  2. ОТВЕТЫ
  3. Ответ 1
  4. Ответ 2
  5. Ответ 3
  6. Ответ 4
  7. Ответ 5
  8. Ответ 6
  9. Ответ 7
  10. Ответ 8
  11. Ответ 9
  12. Ответ 10
  13. Ответ 11
  14. Ответ 12
  15. Rukovodstvo
  16. статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
  17. Java: проверьте, является ли строка числом
  18. Введение Строки — это удобный способ передачи информации и получения ввода от пользователя. В этой статье мы рассмотрим несколько способов проверки того, является ли String числовым в Java, то есть представляет ли String числовое значение. Проверьте, является ли строка числовой с помощью Core Java. Пользователи часто ошибаются при вводе значений, поэтому разработчики должны как можно дольше держать их за руку во время операций ввода-вывода. Самый простой способ проверить, является ли строка числовой или нет, принадлежит нам.
  19. Вступление
  20. Проверьте, является ли строка числовой с помощью Core Java
  21. Проверьте, является ли строка числовой с помощью Apache Commons
  22. NumberUtils.isParsable ()
  23. NumberUtils.isCreatable ()
  24. NumberUtils.isDigits ()
  25. StringUtils.isNumeric ()
  26. StringUtils.isNumericSpace ()
  27. Проверьте, является ли строка числовой с помощью Regex
  28. Заключение
  29. Как проверить тип переменной java

Как проверить тип переменной в Java?

Как я могу проверить, чтобы моя переменная была int, array, double и т.д.

Изменить: Например, как я могу проверить, что переменная является массивом? Есть ли какая-нибудь функция для этого?

ОТВЕТЫ

Ответ 1

Java является статически типизированным языком, поэтому большую часть этой проверки за вас выполняет компилятор. После того, как вы объявите переменную определенного типа, компилятор будет гарантировать, что ей будут назначены только значения этого типа (или значения, которые являются подтипами этого типа).

Примеры, которые вы привели ( int , массив, double ), это все примитивы, и их нет подтипов. Таким образом, если вы объявите переменную как int :

Вы можете быть уверены, что он будет содержать только значения int .

Однако если вы объявили переменную как List , возможно, что переменная будет содержать подтипы List . Примеры этого включают в себя ArrayList , LinkedList и т.д.

Если у вас есть переменная List и вам необходимо знать, является ли она переменной ArrayList , вы можете сделать следующее:

List y; . if (y instanceof ArrayList)

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

Ответ 2

На самом деле довольно легко свернуть собственный тестер, злоупотребляя способностью перегрузки Java. Хотя мне все еще интересно, есть ли в sdk официальный метод.

class Typetester < void printType(byte x) < System.out.println(x + " is an byte"); >void printType(int x) < System.out.println(x + " is an int"); >void printType(float x) < System.out.println(x + " is an float"); >void printType(double x) < System.out.println(x + " is an double"); >void printType(char x) < System.out.println(x + " is an char"); >> 
Typetester t = new Typetester(); t.printType( yourVariable ); 

Ответ 3

a.getClass().getName() — даст вам тип данных фактического объекта, на который ссылается a , но не тип данных, который переменная a была первоначально объявлена как или впоследствии приведена к ней.

boolean b = a instanceof String — сообщит вам, является ли фактический объект, на который ссылается a экземпляром определенного класса. Опять же, тип данных, который переменная a была первоначально объявлена как или впоследствии приведена, не имеет никакого отношения к результату оператора instanceof.

Читайте также:  Границы, рамки и отступы таблиц

Это может случиться Я пытаюсь разобрать String в int, и я хотел бы знать, если мой Integer.parseInt(s.substring(a, b)) выбрасывает int или мусор, прежде чем я Integer.parseInt(s.substring(a, b)) итоги.

Кстати, это известно как отражение. Вот еще немного информации по этому вопросу: http://docs.oracle.com/javase/tutorial/reflect/

Ответ 4

Вы можете работать с Integer вместо int, Double вместо double и т.д. (такие классы существуют для всех примитивных типов). Затем вы можете использовать оператор instanceof, например if(var instanceof Integer)

Ответ 5

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

public void checkType(T object)

Таким образом, вам не нужно иметь несколько перегруженных методов. Я считаю хорошей практикой использовать коллекции по массивам из-за дополнительных преимуществ. Сказав это, я не знаю, как проверить тип массива. Может быть, кто-то может улучшить это решение. Надеюсь это поможет!

P.S Да, я знаю, что это также не проверяет примитивы.

Ответ 6

StringBuilder randSB = new StringBuilder("just a String"); System.out.println(randSB.getClass().getSimpleName()); 

Ответ 7

Первая часть вашего вопроса бессмысленна. Нет никаких обстоятельств, при которых вы не знаете тип примитивной переменной во время компиляции.

Повторите вторую часть, единственное, что вы еще не знаете, является ли переменная массивом, является ли это объектом. В этом случае object.getClass().isArray() расскажет вам.

Ответ 8

Я сделал это, используя: if(x.getClass() == MyClass.class)

Ответ 9

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

//move your variable into an Object type Object obj=whatYouAreChecking; System.out.println(obj); // moving the class type into a Class variable Class cls=obj.getClass(); System.out.println(cls); // convert that Class Variable to a neat String String answer = cls.getSimpleName(); System.out.println(answer); 
public static void checkClass (Object obj)

Ответ 10

Ни один из этих ответов не работает, если переменная является неинициализированным универсальным типом

И из того, что я могу найти, это возможно только с использованием крайне уродливого обходного пути или путем передачи инициализированного параметра в вашу функцию, делая его на месте, смотрите здесь:

НЕДОПУСТИМО, поскольку вы не можете напрямую извлечь тип из параметра T , поскольку он стирается во время выполнения.

Это работает, потому что вызывающий абонент отвечает на инстанцировании переменную out перед вызовом. Это все равно будет выдавать исключение, если при вызове out is null, но по сравнению со связанным решением, это, безусловно, самый простой способ сделать это

Я знаю, что это своего рода конкретное приложение, но так как это первый результат в Google для поиска типа переменной с Java (и учитывая, что T является разновидностью переменной), я чувствую, что это должно быть включено

Ответ 11

Вы можете легко проверить это, используя Java.lang.Class.getSimpleName() только если переменная имеет не примитивный тип. Он не работает с примитивными типами int, long и т.д.

Ответ 12

Object printType(Object o) < return o; >public static void main(String[] args)

Источник

Rukovodstvo

статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.

Java: проверьте, является ли строка числом

Введение Строки — это удобный способ передачи информации и получения ввода от пользователя. В этой статье мы рассмотрим несколько способов проверки того, является ли String числовым в Java, то есть представляет ли String числовое значение. Проверьте, является ли строка числовой с помощью Core Java. Пользователи часто ошибаются при вводе значений, поэтому разработчики должны как можно дольше держать их за руку во время операций ввода-вывода. Самый простой способ проверить, является ли строка числовой или нет, принадлежит нам.

Вступление

Строки — это удобный способ передачи информации и получения ввода от пользователя.

Читайте также:  Docker create container python

В этой статье мы рассмотрим несколько способов проверить, является ли String числовым в Java, то есть представляет ли String числовое значение.

Проверьте, является ли строка числовой с помощью Core Java

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

Самый простой способ проверить, является ли String числовым или нет, — использовать один из следующих встроенных методов Java:

  1. Integer.parseInt()
  2. Integer.valueOf()
  3. Double.parseDouble()
  4. Float.parseFloat()
  5. Long.parseLong()

Эти методы преобразуют заданную String в ее числовой эквивалент. Если они не могут его преобразовать, NumberFormatException , указывающее, что строка не является числовой.

Стоит отметить, что Integer.valueOf() возвращает new Integer() , а Integer.parseInt() возвращает примитивный int . Имейте это в виду, если такая разница изменит ход вашей программы.

 String string = "10"; try < intValue = Integer.parseInt(string); return true; >catch (NumberFormatException e)

Теперь для удобства мы можем абстрагировать эту функциональность во вспомогательный метод:

 public static boolean isNumeric(String string) < int intValue; System.out.println(String.format("Parsing string: \"%s\"", string)); if(string == null || string.equals("")) < System.out.println("String cannot be parsed, it is null or empty."); return false; >try < intValue = Integer.parseInt(string); return true; >catch (NumberFormatException e) < System.out.println("Input String cannot be parsed to Integer."); >return false; > 

Теперь мы можем просто позвонить:

 String string = "10"; if(isNumeric(string)) < System.out.println("String is numeric!"); // Do something >else

Выполнение этого кода приведет к:

 Parsing string: "10" String is numeric! 

С другой стороны, если мы ожидаем, что String будет содержать действительно большое число, мы можем вызвать конструктор BigInteger(String) , который переводит представление String BigInteger .

Проверьте, является ли строка числовой с помощью Apache Commons

Apache Commons — одна из наиболее часто используемых сторонних библиотек для расширения базовой Java Framework. Это дает нам более точный контроль над основными классами Java, в данном случае над строками.

Мы рассмотрим два класса из библиотеки Apache Commons:

Оба из них очень похожи на свои аналоги в классическом Java-классе, но с акцентом на нулевые безопасные операции (с числами и строками соответственно), что означает, что мы можем даже определять значения по умолчанию для отсутствующих ( нулевых ) значений.

Давайте теперь посмотрим, как мы можем проверить числовые значения с помощью этих методов.

NumberUtils.isParsable ()

Этот метод принимает String и проверяет, является ли это число, которое можно анализировать, или нет, мы можем использовать этот метод вместо перехвата исключения при вызове одного из методов, которые мы упоминали ранее.

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

Обратите внимание, что шестнадцатеричные числа и научные обозначения не считаются анализируемыми.

Теперь нам даже не нужен вспомогательный вспомогательный метод, поскольку isParseable() возвращает само boolean

 String string = "10"; if (NumberUtils.isParsable(string)) < System.out.println("String is numeric!"); >else

NumberUtils.isCreatable ()

Этот метод также принимает строку и проверяет, является ли это допустимым номером Java . С помощью этого метода мы можем охватить еще больше чисел, потому что действительный номер Java включает четные шестнадцатеричные и восьмеричные числа, научную нотацию, а также числа, отмеченные квалификатором типа.

Читайте также:  letter-spacing

Теперь мы даже можем использовать что-то вроде:

 String string = "0x10AB"; if (NumberUtils.isCreatable(string)) < System.out.println("String contains a creatable number!"); >else
 String contains a creatable number! 

NumberUtils.isDigits ()

Метод NumberUtils.isDigits() проверяет, содержит ли строка только цифры Unicode. Если String содержит начальный знак или десятичную точку, метод вернет false :

 String string = "25"; if (NumberUtils.isDigits(string)) < System.out.println("String is numeric!"); >else

StringUtils.isNumeric ()

StringUtils.isNumeric() является StringUtils эквивалент NumberUtils.isDigits() .

Если String проходит числовой тест, он все равно может генерировать NumberFormatException при синтаксическом анализе упомянутыми ранее методами, например, если он выходит за пределы диапазона для int или long .

Используя этот метод, мы можем определить, можем ли мы преобразовать String Integer :

 String string = "25"; if (StringUtils.isNumeric(string)) < System.out.println("String is numeric!"); >else

StringUtils.isNumericSpace ()

Кроме того, если мы ожидаем найти больше чисел в isNumericSpace , еще один полезный StringUtils стоит упомянуть. Он проверяет, String только цифры или пробелы Unicode.

Давайте проверим строку, содержащую числа и пробелы:

 String string = "25 50 15"; if (StringUtils.isNumericSpace(string)) < System.out.println("String is numeric!"); >else

Проверьте, является ли строка числовой с помощью Regex

Несмотря на то, что большинство разработчиков будут довольны использованием уже реализованного метода, иногда у вас может быть очень специфическая проверка шаблона:

 public static boolean isNumeric(String string) < // Checks if the provided string // is a numeric by applying a regular // expression on it. String regex = "4+[\\.]?4*"; return Pattern.matches(regex, string); >

А затем мы можем вызвать этот метод:

 System.out.println("123: " + isStringNumeric2("123")); System.out.println("I'm totally a numeric, trust me: " + isStringNumeric2("I'm totally a numeric, trust me")); 

Выполнение этого дает нам следующий результат:

 123: true I'm totally a numeric, trust me: false 

Заключение

В этой статье мы рассмотрели несколько способов проверить, является ли строка числовой или нет (представляет собой число) в Java.

Мы начали с Core Java и NumberFormatException , после чего использовали библиотеку Apache Commons. Оттуда мы использовали StringUtils и NumberUtils чтобы проверить, является ли String числовым или нет, с различными форматами.

Licensed under CC BY-NC-SA 4.0

Источник

Как проверить тип переменной java

Для проверки типа переменной в Java можно использовать оператор instanceof . Он возвращает true , если объект является экземпляром указанного класса или его подкласса, и false в противном случае.

Object obj = "строка"; if (obj instanceof String)  System.out.println("Переменная obj является строкой"); > else  System.out.println("Переменная obj не является строкой"); > 

Если переменная obj является экземпляром класса String , то будет выведено «Переменная obj является строкой». Если obj не является строкой, то будет выведено «Переменная obj не является строкой».

Источник

Оцените статью