Java имеет пул строк, в котором Java управляет распределением памяти для объектов String. См. String Pools в Java
Когда вы проверяете (сравниваете) два объекта с помощью оператора ==
, он сравнивает равенство адресов в пуле строк. Если два объекта String имеют одинаковые адреса, то он возвращает true
, в противном случае false
. Но если вы хотите сравнить содержимое двух объектов String, вы должны переопределить метод equals
.
equals
- фактически метод класса Object, но он переопределяется в класс String и дается новое определение, которое сравнивает содержимое объекта.
Example:
stringObjectOne.equals(stringObjectTwo);
Но помните, что это относится к случаю String. Если вы хотите сравнить регистр без учета регистра, вы должны пойти для метода equalsIgnoreCase класса String.
Давайте посмотрим:
String one = "HELLO";
String two = "HELLO";
String three = new String("HELLO");
String four = "hello";
one == two; // TRUE
one == three; // FALSE
one == four; // FALSE
one.equals(two); // TRUE
one.equals(three); // TRUE
one.equals(four); // FALSE
one.equalsIgnoreCase(four); // TRUE
i + 2 это выражение, вы должны присвоить результат где-нибудь, поэтому правильный синтаксис:
for(int i = 0; i < numbers.length; i=i+2)
{
numbers[i] = 2;
System.out.println(numbers[i]);
}
ForUpdate
должен быть StatementExpressionList
, то есть список StatementExpression
с.
i+2
является выражением, но не выражением оператора.
Выражения операторов можно неофициально (*) рассматривать как выражения, которые могут иметь побочный эффект, и, таким образом, для них имеет смысл оставаться в выражении самостоятельно i+2
не имеет побочного эффекта, поэтому нет смысла оценивать его.
(*) Неофициально, потому что method1() + method2()
может иметь побочный эффект, потому что methodN()
может иметь побочный эффект; и тем не менее, это не выражение выражения, потому что «основное» выражение здесь - сложение - само по себе не имеет побочных эффектов.
Вы могли бы написать это как for (;; method1(), method2()) { ... }
(без добавления), если это было то, что вы хотели в вашем ForUpdate
.