Что должно делать «Integer.valueOf().intValue()»?

#java

#java

Вопрос:

Вот строка кода Java, которую я не смог понять.

  String line = "Some data";//I understand this line
 int size;//I understand this line too

 size = Integer.valueOf(line,16).intValue();//Don't understand this one
  

То, что я знаю, является целым числом.valueOf (строка) совпадает с Integer.parseInt(строка) , не так ли? Поправьте меня, если я ошибаюсь; Спасибо.

Комментарии:

1. Я предполагаю, что вы имеете в виду Integer.valueOf , кстати — нижний регистр V .

2. Да, я имею в виду Integer.valueOf()!

Ответ №1:

Integer.ValueOf(line,16) преобразует строковое значение line в Integer объект. В этом случае радиус равен 16.

intValue() получает int значение из Integer object созданного выше.

Кроме того, вышеуказанные два шага эквивалентны Integer.parseInt(line,16) .

Для получения дополнительной ИНФОРМАЦИИ, пожалуйста, обратитесь к документации Java API для класса Integer.

Комментарии:

1. Радиус является основой системы счисления. Например, в десятичной системе счисления равно десяти, в двоичной системе счисления равно двум.

2. Извините, да, это должно быть основание

Ответ №2:

Да, это эквивалентно:

 size = Integer.parseInt(line, 16);
  

Действительно, глядя на реализацию, существующий код фактически реализован так же эффективно:

 size = Integer.valueOf(Integer.parseInt(line, 16)).intValue();
  

что явно бессмысленно.

Кстати, присвоение значения -1 в предыдущей строке бессмысленно. Это было бы актуально только в том случае, если бы вы все еще могли прочитать значение, если исключение было сгенерировано Integer.parseInt , но поскольку область действия size является тем же блоком, что и вызов Integer.valueof , он все равно не будет находиться в области действия после исключения.

Комментарии:

1. Вы правы, я должен удалить присвоение -1 ради упрощения понимания кода!

Ответ №3:

Пожалуйста, посмотрите на тип данных переменных в левой части.

 public class Test {
    public static void main(String[] args) {
        String s = "CAFE";
        Integer m = Integer.valueOf(s, 16);
        int n = m.intValue();

        System.out.println(n);
    }
}
  

Integer это ссылочный тип, который обертывает int , который является примитивным типом.

Комментарии:

1. Вы имеете в виду, что целое число m (ссылочный тип) содержит int n (примитивный тип), верно?

2. m содержит int примитивный тип, но он не содержит n .

Ответ №4:

 " = Integer.valueOf().intValue()"
  

и пример:

 String myNumber = "54";    
int c = Integer.valueOf(myNumber).intValue();  // convert strings to numbers
  

Результат:

 54 // like int (and before was a String)