2015-05-11 2 views
0

У меня есть это утверждение, и я пытаюсь удалить первый символ и заменить его пустой строкой, но почему-то это возвращает false. Кажется, он просто устанавливает его равным, а затем спрашивает, равно ли он мне.Зачем это вернуть false?

public class Test1 
{ 
    public static void main(String[] args) 
    { 
     String aString = "123"; 
     String sub = Character.toString(aString.charAt(0)); 
     System.out.println(sub == Character.toString(aString.charAt(0))); 
    } 
} 
+0

Я думаю, вы должны прочитать разницу между == и равна –

+0

потому что два '«1»' 's не будет то же самое. Они * разные * строковые экземпляры с * одинаковым * значением – TheLostMind

+0

Вы должны «равняться» для элементов типа объекта –

ответ

0

Метод .equals() вместо == operator.

+2

Зачем ему это делать? – TheLostMind

+0

Поскольку '.equals()' проверяет значения переменных, где '==' оператор проверяет значения хэша и переменной. – ELITE

+0

Точно!. Вы всегда должны давать * краткое * описание *, почему что-то должно быть сделано *. Проверьте другой ответ – TheLostMind

2

Попробуйте .equals вместо ==, так как == предназначен для контрольной проверки и .equals предназначен для проверки значения. После просмотра кода, я думаю, вам нужна проверка ценности. Таким образом, использование .equals следующим образом,

sub.equals(Character.toString(aString.charAt(0))); //this will return true. 
0

Что касается класса Струнный:

Равных() метод сравнивает «значение» внутри экземпляров String (в куче), независимо, если две объектные ссылки см к тому же экземпляру String или нет. Если любые две ссылки на объекты типа String относятся к тому же экземпляру String, тогда это здорово! Если две ссылки на объекты ссылаются на два разных экземпляра String, это не имеет значения. Его значение «значение» (то есть: содержимое массива символов) внутри каждого экземпляра String сравнивается.

С другой стороны, оператор «==» сравнивает значение двух ссылок на объекты, чтобы увидеть, относятся ли они к одному экземпляру строки. Если значение обеих ссылок на объекты ссылается на один и тот же экземпляр String, тогда результат булевого выражения будет «true» .. duh. Если, с другой стороны, значение обеих ссылок на объекты ссылается на разные экземпляры String (хотя оба экземпляра String имеют одинаковые «значения», то есть содержимое массивов символов каждого экземпляра String одинаково), результат булевого выражения будет «ложным».

- Кредиты Жак Colmenero См What is the difference between == vs equals() in Java?

Смежные вопросы