Все объекты гарантированно имеют метод .equals()
, поскольку Object содержит метод, .equals()
, который возвращает логическое значение. Задача подкласса переопределять этот метод, если требуется дополнительное определение определения. Без него (т. Е. С помощью ==
) только адреса памяти проверяются между двумя объектами для равенства. String переопределяет этот метод .equals()
и вместо использования адреса памяти возвращает сравнение строк на уровне символа для равенства.
Ключевое замечание состоит в том, что строки хранятся в одном пуле, поэтому после создания строки он всегда хранится в программе по тому же адресу. Строки не меняются, они неизменяемы. Вот почему это плохая идея использовать регулярную конкатенацию строк, если у вас есть серьезное количество обработки строк. Вместо этого вы будете использовать предоставленные классы StringBuilder
. Помните, что указатели на эту строку могут измениться, и если вам было интересно увидеть, были ли два указателя одинаковыми ==
, это был бы прекрасный способ. Строки сами не делают.
У примитивов нет полей или методов. Иногда компилятор автоматически помещает ваш примитив в соответствующий класс, в данном случае Integer
. Возможно, именно этого вы и ожидали в данном случае. Иногда компилятор этого не делает. В этом случае он не будет автоматически упакован.
У вас есть несколько альтернатив:
String.valueOf (nltxt)
"" + nltxt
(или, если у вас есть что-то полезное, чтобы написать вместе с числом, выполните "nltxt equals" + nltxt
Выполните «автобоксирование» вручную: новое целое число (nltxt) .toString ()
.
Отформатируйте его каким-либо пользовательским способом: String.format ("nltxt is% d что плохо% n ", nltxt)
Примитивные типы не являются объектами и, как таковые, не имеют никаких методов.
Чтобы преобразовать его в строку, используйте String.valueOf (nlTxt)
.
Для этого также можно использовать Integer.toString (nllen);
.