#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)