1. Строковые == и равные()
При оценке равенства строк == оценивает, совпадают ли адреса, а функция равенства() определяет, совпадают ли значения символов. В большинстве случаев результаты == и равенства() одинаковы. Это связано с тем, что объект String находится в неизменяемом режиме. Если вы не создаете новый объект String явно, Java по умолчанию сохраняет объект String, помещая вновь созданный объект String в буфер, а затем каждый раз определяет, будет ли буфер. этот объект уже существует, если да, то объект String с тем же символьным значением, созданный позже, также будет указывать на адрес, по которому изначально был создан объект символьного значения. То есть, когда значения символов одинаковы, геология в большинстве случаев одинакова. == имеет тот же эффект, что и метод равенства(). Однако, когда объект создается с помощью str = new String("abc") вместо прямого присвоения как str = "abc" или после некоторой обработки строкового соединения или генерируется с помощью таких объектов, как StringBuffer, новые объекты будут открыты в Для адресов результаты == и равных() в настоящее время различны.
Это немного сложно? Здесь вам нужно некоторое понимание памяти, стека и объектного хранилища. Я не хочу останавливаться на этом вопросе. Если вы не понимаете, просто помните, что если вы хотите определить, равны ли значения символов двух строк и нет ли других требований, используйте метод равенства() вместо ==. Что касается случаев, когда вам нужно использовать. ==, Думаю, что когда вам это понадобится, вы это поймете естественным путем. Фактически, для оценки строки нам редко нужно использовать ==.
2. О str.equal("abc") и "abc".equal(str)
Кажется, по этому поводу ведется много споров. Написание первой константы в конце может соответствовать привычкам большинства людей и нашему логическому мышлению. Но необходимо еще одно решение, чтобы определить, является ли str нулевым. В противном случае здесь может возникнуть исключение. Последний способ записи не требует дополнительной оценки того, является ли он нулевым. Что касается моих личных предпочтений, я предпочитаю последний способ письма.
3. О нулевой строке
/**
* Проверьте ситуацию, когда строка Java равна нулю.
* Дата создания: 3 июня 2009 г.
* автор:Администратор
*
*/
публичная статическая недействительность testNull(){
Строка a= null,b = null,c="хе-хе";
System.out.println(a == null);
System.out.println(a+b+c);
}
Результат выполнения метода:
истинный
nullnull хаха Так что всем следует быть внимательными при выполнении операций по слиянию строк, не забывайте проверять на ноль, иначе результат будет не очень удовлетворительным!