public void run(){
int x = 9;
int y = 9;
println( "true or false = " + (x == y) );
println("true or false = " + ( x < y) );
prinltn("true or false = " + (x > y) );
}
В примере моя книга использует круглые скобки ()
внутри метода println для проверки того, что-то истинно или ложно. Это был мой первый раз, когда ()
использовался как логический тест внутри метода println. Раньше я решил решить проблему чем-то вроде
if (x == y) {
println("true or false = true");
} else {
println("true or false = false");
}
Нет. Не избегайте. Используйте ()
. Это не о внутреннем println
. это все о конкатенации строк.
Просто для изменения попробуйте выполнить приведенные ниже инструкции и проверить результаты.
println( "true or false = " + (x == y) );
а также
println( "true or false = " +x == y) );
В нижеприведенном случае для изображения используется приоритет оператора.
Опять же, перейдя к сути, почему использование скобки внутри метода печати (x == y)
, скобки имеют высокую точность, поэтому операторы внутри них выполняются сначала перед оценкой всего выражения.
Правильнее ли другое?
Правильно, это не совсем правильный термин, чтобы описать его, поскольку оба они отлично работают. Единственное отличие - это строки кода. Так нет. Оба они правы.
Следует ли мне избежать использования одного из приведенных выше примеров?
Не совсем, но я рекомендую вам сделать свой код как можно короче, чтобы упростить его работу, как и первый.
Что касается того, что происходит с этими println
это просто простая конкатенация строк:
println("true or false = " + (x == y) );
// true or false = true
Первый из них целесообразен только потому, что он имеет относительно меньшее количество строк кода, но это не значит, что другое неверно. Если вы вообще хотите использовать логическое o/p теста, выполняемого на x & y, которое будет использоваться в вашем коде, тогда вам придется идти for-->
boolean b=(x==y);
Тогда "b" может быть повторно использовано в дальнейшем.
здесь() не используется для логического теста, он используется для приоритета. Если вы не используете(), то сначала x будет преобразован в String, тогда вы не сможете использовать == со строкой и целым числом
(incompatible operand types String and int)
Чтобы избежать этого, мы должны использовать()
(x == y)
Я могу предложить вам, что первый пример хорош, он уменьшает количество строк.
println("true or false = " + (x == y) );
Когда вы проверяете, что-то истинно, это условие становится логическим значением (true
или false
). Булевы значения могут быть назначены и напечатаны так же, как и другие типы (например, int
). Поэтому, если вы ставите:
System.out.println("true or false = " + (x == y));
это то же самое, что и делать:
boolean f = (x==y);
System.out.println("true or false = " + f);
это то же самое, что и делать:
boolean f;
if (x==y) {
f = true;
} else {
f = false;
}
System.out.println("true or false = " + f);
Попробуй это:
String result = (x == y) ? "true" : "false";
System.out.println("true or false = " + result);
println( (1) + (2) );