Невозможно написать & ldquo; i + 2 & rdquo; как постусловие в моем цикле for-each [Java]

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

0
задан Norton 17 January 2019 в 10:23
поделиться

2 ответа

i + 2 это выражение, вы должны присвоить результат где-нибудь, поэтому правильный синтаксис:

for(int i = 0; i < numbers.length; i=i+2)
{
    numbers[i] = 2;
    System.out.println(numbers[i]);
}
0
ответ дан slesh 17 January 2019 в 10:23
поделиться

ForUpdate должен быть StatementExpressionList, то есть список StatementExpression с.

i+2 является выражением, но не выражением оператора.

Выражения операторов можно неофициально (*) рассматривать как выражения, которые могут иметь побочный эффект, и, таким образом, для них имеет смысл оставаться в выражении самостоятельно i+2 не имеет побочного эффекта, поэтому нет смысла оценивать его.


(*) Неофициально, потому что method1() + method2() может иметь побочный эффект, потому что methodN() может иметь побочный эффект; и тем не менее, это не выражение выражения, потому что «основное» выражение здесь - сложение - само по себе не имеет побочных эффектов.

Вы могли бы написать это как for (;; method1(), method2()) { ... } (без добавления), если это было то, что вы хотели в вашем ForUpdate.

0
ответ дан Andy Turner 17 January 2019 в 10:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: