Java-де тиімді// деген не?

Мен жай ғана if/else арқылы Java-де бірдей нөмірді тексеру үшін басқа мәнді қайтаруға тырысамын.

if (move % 2 == 0) {
    return "o";
} else {
    return "O";
}

Мен JavaScript-те білемін

if() : a ? b ;

Бұл Java-те қолданылуы мүмкін бе?

2
if және else өте тиімді болып табылады ...
қосылды автор Rex M, көзі
Сіз де істей алмайсыз: return (move% 2 == 0)? «o»: «O»;
қосылды автор Blender, көзі
Үшінші: return (move% 2 == 0)? «o»: «O»; - бірақ бұл сіздің барабар, бірақ қысқа мерзімге арналған if-else сөздері үшін пайдалы болуы мүмкін. (бұл редакцияланған)
қосылды автор wkl, көзі
Опс, рахмет @Shakedown - орнына редакцияланған.
қосылды автор wkl, көзі
@birryree: Бұл дұрыс емес мәлімдеме. Сіз мынаны айтқыңыз келді: return (move% 2 == 0)? «o»: «O»;
қосылды автор Nate W., көзі

7 жауаптар

Ия, Java-дегі үш операторды пайдалана аласыз:

return (move % 2 == 0) ? "o" : "O";

Тек егер - else қарағанда тезірек болсын деп күтпеңіз.

12
қосылды
Мен жай ғана кодтың бірнеше жолын қысқартқым келді. Барлық жауаптарыңызға рахмет.
қосылды автор Aaron, көзі

Ия, сіз шартты оператор мүмкіндігін пайдалана аласыз. Java:

return (move % 2 == 0) ? "o": "O";

Бұл сіздің бағдарламаңызды тезірек жасамайды, бірақ бұл аздап қысқа, және шартты оператормен таныс болсаңыз, онда сіз оқуды оңайырақ көресіз.

Бірақ, керісінше, егер сіз істемесеңіз осы операторды білсеңіз, кодтың не екенін анықтау қиын болады.

3
қосылды

егер үш жақты операторға қарсы «оңтайландыру» орнына move% 2 == 0 фокусына назар аудару керек. Егер move өзгермелі нүкте айнымалы емес, бүтін сан болса, бұл мүмкін жылдамырақ болады:

if( move & 1 == 0 )
    return "E";
else
    return "O";

Бит операциялары, әдетте бөлу немесе модуль есептеріне қарағанда жылдамырақ болады.

1
қосылды

Yes you can. It's called a ternary operator

Қолданылуы:

  true ? case1 : case2;             //returns case1
  false ? case1 : case2;            //returns case2
1
қосылды
Бұл оны пайдаланудың нашар мысалы.
қосылды автор Nate W., көзі

Егер сіз мұны өте тез күтуге мұқтаж болсаңыз, ол өте күмәнді, сізде іздеу кестесін де қарастырған жөн:

static final char[] moveChar = {"o", "O"};
// ...
return moveChar[move % 2];

Бірақ мен мұнда ұсынылған ұсыныстардың ешқайсысын уақытша орындамас едім, және мен қазір сізде болған нәрсе шынымен қиындықты дәлелдегенге дейін ештеңе жасамас едім, ол арқылы ол көп нәрсені жұмсайды Процессордың уақытының 50%.

0
қосылды

(шартты)? if-true-statement: if-false-statement;

Yes it can, check out the Wikipedia page for Ternary Operators

0
қосылды

Егер сіз if-statement-ды көп немесе аз тиімді жолмен пайдалана алмасаңыз.

... және одан да көп - бұл егер тек егер if-statements:

Пайдаланудың себептері бойынша - пайдаланылатын сөздерді оңтайландыруға - never never - оқуға ыңғайлы (және мерзімде, қол жетімділікке) арналған кодты жазу керек. Мұның себебі байт кодын оңтайландыратын JIT (Just-in-time компиляторы) бар және байт кодында көрсетілген нұсқауларды өзгерту.

Егер сіз үштік операторды пайдалану туралы ойласаңыз, онда бұл кодты түсіну қиынға түседі (егер сіз кодта жұмыс істейтін бірнеше адам болсаңыз). Егер сіз кодта жұмыс істеп жүрсеңіз, онда өзіңіз қалағандай істеңіз - және иә:

Object var = boolean-expression ? some-value : another-value;

әлдеқайда ықшам қарағанда:

Object var;
if (boolean-expression)
   var = some-value;
else
   var = another-value;
0
қосылды