Если метод equals()
присутствует в классе java.lang.Object
, и ожидается, что он проверяет эквивалентность состояния объектов! Это означает, что содержимое объектов. В то время как ожидается, что оператор ==
проверяет, что фактические экземпляры объекта одинаковы или нет.
Пример
Рассмотрим две различные ссылочные переменные, str1
и str2
:
str1 = new String("abc");
str2 = new String("abc");
Если вы используете equals()
System.out.println((str1.equals(str2))?"TRUE":"FALSE");
, вы получите выход как TRUE
, если вы используете ==
.
System.out.println((str1==str2) ? "TRUE" : "FALSE");
Теперь вы получите вывод FALSE
в качестве вывода, потому что оба str1
и str2
указывают на два разных объекта, хотя оба они имеют одинаковое строковое содержимое. Именно из-за new String()
каждый новый объект создается каждый раз.
J, они правы (выше). Лично, если это небольшое количество данных, я бы использовал функцию Split , чтобы поместить в массив, а затем изменить и вывести оттуда. Это правда, что функции рабочего листа всегда будут быстрее и потреблять меньше ресурсов, чем использование массивов (особенно динамических массивов), но, возможно:
Option Explicit
Function MakeDates()
Dim cellData As String
Dim arr_data() As String
Dim intArr As Integer
cellData = ActiveCell.Value
arr_data = Split(cellData, ",")
For intArr = 0 To UBound(arr_data) - 1
'getting rid of double-quotes
arr_data(intArr) = Replace(arr_data(intArr), """", "")
'formatting date if applicable
If IsDate(arr_data(intArr)) Then: _
arr_data(intArr) = Format(arr_data(intArr), "dd-m-yyyy")
'placing data on Sheet
ActiveCell.Offset(0, intArr).Value = arr_data(intArr)
Next
End Function