Kielelezo cha Opereta ya OR ya Java: || vs |, Utekelezaji wa Haraka, na Makosa ya Kawaida

目次

1. “OR” ni nini katika Java?

Katika Java, OR hutumika hasa katika utengenezaji wa masharti (kama tamko if) kufanya uamuzi kama “SAWA ikiwa mojawapo ni kweli.”
Pia ni kipengele kinachowasumbua wanaoanza, kwa hivyo ni muhimu kuelewa kwa usahihi jinsi kinavyotofautiana na AND na maana ya alama hizo.

1.1 Hali za Kawaida Ambapo Masharti ya OR Yanahitajika

Masharti ya OR yanaonekana sana katika maendeleo halisi na katika kujifunza. Kwa mfano:

  • Unapohitaji kutekeleza mantiki ikiwa mojawapo ya masharti imetimizwa wp:list /wp:list

    • Ikiwa ni likizo au wikendi, unataka kugawanya mchakato
    • Unapohitaji kuangalia masharti mengi ya ingizo kwa wakati mmoja wp:list /wp:list

    • Ikiwa thamani ni null au kamba tupu, unataka kuitendea kama kosa

    • Unapohitaji kuruhusu kitendo kwa majukumu au hali nyingi wp:list /wp:list

    • Ruhusu operesheni ikiwa mtumiaji ni msimamizi au mmiliki

Katika lugha ya kila siku, ni kama kusema:

“A au B ni SAWA.”

Ni kutafsiri uamuzi huo moja kwa moja katika msimbo.

1.2 Njia ya Msingi ya Kuandika OR katika Java

Katika Java, OR ya kimantiki inaandikwa kwa kutumia opereta || (mistari miwili wima).

if (conditionA || conditionB) {
    // Runs when either conditionA or conditionB is true
}

Msimbo huu unamaanisha:

  • conditionA ni true au
  • conditionB ni true

Ikiwa mojawapo ni true, msimbo ndani ya kifungu cha if utafanyika.

1.3 “OR” ni Mtindo wa Uamuzi Unaolingana Vizuri na Lugha Asilia

Kwa sababu masharti ya OR yanalingana kwa karibu na jinsi tunavyofikiri katika lugha asilia, njia rahisi ya awali ni “kuutafsiri kuwa sentensi.”

if (isHoliday || isWeekend) {
    System.out.println("今日は休みです");
}

Kwa Kiingereza, hii inamaanisha:

“Ikiwa ni likizo au wikendi, chapisha ‘Leo ni siku ya mapumziko.’”

Kama mgeni, badala ya:

  • kukumbuka alama kama zilivyo
  • kujaribu kuzifanyia nguvu kama sarufi

ni haraka zaidi (na hupunguza makosa) kusema upya kwa maneno.

1.4 Makala Hii Itashughulikia Nini

Watu wengi wanaotafuta “java or” wanachanganyikiwa si tu kuhusu maana ya OR, bali pia kuhusu:

  • Tofauti kati ya || na | ?
  • Kwa nini “upande wa kulia hauendi” wakati mwingine?
  • Unapaswa kuwa makini na nini unapoitumia pamoja na AND (&& )?
  • Jinsi ya kuandika salama katika msimbo wa ulimwengu halisi?

Katika makala hii, tutajibu maswali haya kwa mpangilio ufuatao:

  • Misingi → Mchakato → Vizingiti → Matumizi ya vitendo

kwa maelezo wazi, yanayofaa kwa wanaoanza.

2. Misingi ya Opereta ya Kimantiki || (Inayotumika Mara kwa Mara katika Tamko if)

Unapoandika masharti ya OR katika Java, opereta ya kimantiki || ndiyo ya msingi na inayotumika zaidi.
Ukikata “java or,” ni salama kusema || ndilo jambo la kwanza unalopaswa kuelewa.

2.1 Maana na Jukumu la ||

Opereta ya kimantiki || inarudisha true ikiwa mojawapo ya masharti ya kushoto au kulia ni true.

ConditionA || ConditionB

Msemo huu unakokotolewa kama ifuatavyo:

ConditionAConditionBResult
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

Kwa maneno mengine:

Ni false tu wakati zote mbili ni false
Vinginevyo ni true

Ni kanuni rahisi sana.

2.2 Matumizi ya Msingi katika Tamko if

Katika msimbo halisi, || inatumika karibu kila wakati ndani ya sharti la if.

int age = 20;

if (age >= 18 || age == 17) {
    System.out.println("入場可能です");
}

Hii inamaanisha:

“Uingilio unaruhusiwa ikiwa umri ni miaka 18 au zaidi au umri ni 17.”

Ikiwa mojawapo ya masharti imetimizwa, msimbo ndani ya kifungu cha if utaendeshwa.

2.3 || Inaunganisha Maelezo ya Boolean

Pande zote za || lazima ziwe maelezo yanayokokotoa thamani ya boolean (true/false).

Mfano sahihi:

if (score >= 80 || score == 100) {
    // OK
}

Mfano usio sahihi:

if (score || 100) {
    // Compile error
}

Huwezi kutumia OR moja kwa moja kwa nambari au kamba.
Badala yake, unachanganya OR na:

  • vigezo vya kulinganisha ( == , >= , < , n.k.)
  • vigezo vya boolean
  • mbinu zinazorudisha boolean

ili kuunda masharti halali.

2.4 Wakati OR Inafanya Msimbo Kuwa Rahisi Kusoma

Kutumia || hukuruhusu kujumlisha ukaguzi mwingi katika uamuzi mmoja.

if (status.equals("ADMIN") || status.equals("OWNER")) {
    System.out.println("操作が許可されています");
}

Hii inaeleza wazi:

“Ruhusu operesheni ikiwa mtumiaji ni msimamizi au mmiliki.”

Kama utaziepuka OR na kuiandika kando, itakuwa ndefu sana:

if (status.equals("ADMIN")) {
    System.out.println("操作が許可されています");
} else if (status.equals("OWNER")) {
    System.out.println("操作が許可されています");
}

Kutumia OR kunaleta faida kama vile:

  • msimbo mdogo
  • nia inajitokeza mara moja
  • rahisi kubadilisha au kupanua

na kadhalika.

2.5 Vidokezo Muhimu Ambavyo Wajitahidi Wanapaswa Kujifunza Kwanza

Katika hatua hii, inatosha kukumbuka vidokezo vitatu hivi:

  1. || ina maana “SAWA ikiwa upande wowote ni kweli”
  2. Kwa kawaida hutumika katika masharti ya if
  3. Pande zote mbili lazima ziwe tafsiri za boolean

3. Muhimu: || Inatumia Uthibitishaji wa Mzunguko Mfupi

Kimuundo muhimu zaidi cha opereta ya OR ya kimantiki || ni
uthibitishaji wa mzunguko mfupi.

Kuelewa hili au kutokuelewa kunaweza kuleta tofauti kubwa katika
kuandika msimbo salama au kuleta hitilafu.

3.1 Uthibitishaji wa Mzunguko Mfupi ni Nini?

Uthibitishaji wa mzunguko mfupi unamaanisha: ikiwa matokeo yamewekwa tayari na upande wa kushoto, upande wa kulia hautahesabiwa.

Kwa masharti ya OR, kanuni ni:

  • Ikiwa upande wa kushoto ni truetafsiri yote inahakikishwa kuwa kweli
  • Kwa hiyo, upande wa kulia hautatekelezwa
    if (conditionA || conditionB) {
        // process
    }
    

Katika hali hii:

  • Ikiwa conditionA ni trueconditionB haitahesabiwa

3.2 Mfano Halisi wa Uthibitishaji wa Mzunguko Mfupi

Tazama msimbo ufuatao:

boolean result = true || expensiveCheck();

Katika hali hii:

  • Upande wa kushoto ni true
  • Kwa sababu ni sharti la OR, matokeo yamewekwa tayari

Hivyo njia expensiveCheck() haijaitwa.

Hii si kosa—ni tabia sahihi kulingana na maelezo ya Java.

3.3 Kwa Nini Uthibitishaji wa Mzunguko Mfupi Ni Muhimu?

Uthibitishaji wa mzunguko mfupi una faida kubwa za kiutendaji.

1. Unazuia Kazi Isiyohitajika

if (isAdmin || checkDatabase()) {
    // process
}
  • Ikiwa mtumiaji ni msimamizi, hakuna haja ya kuita checkDatabase()
  • Operesheni nzito kama ufikiaji wa DB inaweza kurukwa kiotomatiki

Utendaji bora

2. Inazuia Vighairi (Makosa)

Uthibitishaji wa mzunguko mfupi pia hutumika mara nyingi kwa makusudi kuzuia makosa.

if (user == null || user.isGuest()) {
    // guest logic
}

Katika msimbo huu:

  • Ikiwa user == null ni true
  • user.isGuest() haitahesabiwa

Hivyo NullPointerException haitatokea.

Hapa kuna muundo hatari ambao wajitahidi mara nyingi huandika:

if (user.isGuest() || user == null) {
    // Dangerous: may cause NullPointerException
}

Unapogombania uthibitishaji wa mzunguko mfupi, daima weka ukaguzi wa null upande wa kushoto
Hii ni desturi ya kawaida katika msimbo wa ulimwengu halisi.

3.4 Kosa la Kawaida na Uthibitishaji wa Mzunguko Mfupi

Uthibitishaji wa mzunguko mfupi ni muhimu, lakini ukuitumia bila kujua, unaweza kusababisha mkanganyiko.

Usaliweke Operesheni za “Athari za Pembeni” Upande wa Kulia

if (flag || count++) {
    // some process
}

Katika hali hii:

  • Ikiwa flag ni true
  • count++ haitendwi

Hii inaweza kusababisha hitilafu ambapo “mchakato uliodhani unafanya kila wakati” wakati mwingine haufanyi.

3.5 Muhtasari wa Wajitahidi (Uthibitishaji wa Mzunguko Mfupi)

Mambo muhimu ya kukumbuka kutoka sehemu hii:

  1. || ina maana ikiwa upande wa kushoto ni kweli, upande wa kulia hautatathminiwa
  2. Hii si hitilafu—ni tabia iliyokusudiwa na Java
  3. Ittumie ili kuepuka makosa ya null na kuruka kazi ngumu
  4. Usiweka operesheni zenye athari za pembeni ndani ya masharti

4. Tofauti Kati ya || na | (Sehemu ya Kutosha ya Kuchanganyikiwa)

Moja ya sababu kuu ambazo watu wanachanganyikiwa wanapojaribu kutafuta “java or” ni kwamba
|| na | zinaonekana sawa.

Lakini hitimisho ni rahisi: hizi mbili ni kabisa tofauti katika madhumuni na tabia.

4.1 Elewa Hitimisho Kwanza: Zinazo Matumizi Tofauti

Hebu tufupishe tofauti katika mstari mmoja:

  • || : opereta ya OR ya kimantiki (kwa masharti ya tawi, na tathmini ya short‑circuit)
  • | : opereta ya OR ya kibiti (kwa operesheni za biti kwenye nambari, bila tathmini ya short‑circuit)

Kama mgeni, kumbuka tu sheria hii:
Katika tamko la if, kwa msingi tumia || pekee.
Hutapata tatizo lolote ikiwa utaifuata.

4.2 Tofauti Inapotumika na booleans

Kwa kweli, | pia inaweza kutumika na booleans.
Hii ndilo hasa inayoifanya kuchanganyikiwa.

boolean a = true;
boolean b = false;

System.out.println(a || b); // true
System.out.println(a | b);  // true

Ikiwa unaangalia tu matokeo, zote mbili zinakuwa kweli.
Hata hivyo, tabia ya tathmini ni kabisa tofauti.

4.3 Tofauti Kuu: Short‑Circuit vs Bila Short‑Circuit

|| (na tathmini ya short‑circuit)

if (a || check()) {
    // process
}
  • a ni kweli
  • Matokeo yameamuliwa
  • check() haijatekelezwa

| (bila tathmini ya short‑circuit)

if (a | check()) {
    // process
}
  • Hata kama a ni kweli
  • check() daima inatekelezwa

Hii ndiyo tofauti ya uamuzi.

4.4 Kwa Nini Kutumia | katika Masharti Ni Hatari

Hii ni kosa la kawaida la wanaoanza:

if (user != null | user.isActive()) {
    // dangerous
}

Kwa msimbo huu:

  • Hata kama user != null ni si kweli
  • user.isActive() bado inatekelezwa

Matokeo yake, NullPointerException hutokea.

Toleo sahihi ni:

if (user != null || user.isActive()) {
    // safe
}

Usitumie | kwa matawi ya masharti
Tafadhali ujifunze hili kwa nguvu.

4.5 Mahali | Inatumika Halisi (OR ya Kibiti)

| ni opereta ya kibiti inayotumika kwa urekebishaji wa biti.

int READ  = 1; // 0001
int WRITE = 2; // 0010

int permission = READ | WRITE; // 0011

Hii inatumika katika hali kama:

  • kuunganisha bendera
  • kusimamia mipangilio kwa kutumia biti

na mifumo inayofanana.

4.6 Kanuni Rahisi kwa Wanaoanza

Ukikosa uhakika, tumia kanuni hizi:

  1. Tamko la if / masharti → ||
  2. operesheni za biti kwenye nambari → |
  3. Karibu hakuna haja ya kutumia | na booleans
  4. Ukihitaji short‑circuiting, daima tumia ||

Katika sehemu ijayo, tutaelezea
jinsi ya kuunganisha masharti mengi ya OR na kudumisha msimbo wako usomeke.

5. Kuunganisha Masharti Mengi ya OR (Mabano na Usomaji Rahisi)

Katika programu za ulimwengu halisi, masharti ya OR hayakoma kwenye ukaguzi mbili tu.
Mara nyingi zaidi, unahitaji kuunganisha masharti matatu au zaidi.

Sehemu hii inaelezea sarufi sahihi na jinsi ya kudumisha msimbo wako usomeke masharti yanapoongezeka.

5.1 Muundo wa Msingi: Kuunganisha Masharti ya OR

Unaweza kuunganisha masharti ya OR kwa kutumia || mara kwa mara.

if (status.equals("ADMIN") || status.equals("OWNER") || status.equals("EDITOR")) {
    // permission granted
}

Hii inamaanisha halisi:

“Kama hali ni ADMIN au OWNER au EDITOR, ruhusa inatolewa.”

Ukikokotoa idadi ndogo ya masharti, hii ni sawa kabisa.

5.2 Matatizo Wakati Masharti Yanapoongezeka

Kadiri masharti ya OR yanavyoongezeka, matatizo yafuatayo mara nyingi hujitokeza:

  • Mistari inakuwa mirefu na ngumu kusoma
  • Nia ya sharti inakuwa haieleweki
  • Makosa yanakuwa ya kawaida zaidi wakati wa matengenezo
    if (a || b || c || d || e) {
        // unclear intent
    }
    

Katika hali hizi, unapaswa kuboresha muundo badala ya kuendelea kupanua sharti.

5.3 Boresha Usomewa kwa Kutokana na Vigezo vya Boolean

Mbinu rahisi na yenye ufanisi zaidi ni kutokana na vigezo vya boolean vyenye maana.

boolean isAdmin  = status.equals("ADMIN");
boolean isOwner  = status.equals("OWNER");
boolean isEditor = status.equals("EDITOR");

if (isAdmin || isOwner || isEditor) {
    // permission granted
}

Hii mara moja inatoa faida kubwa:

  • Nia ya msimbo inaonekana kwa mtazamo mmoja
  • Masharti ni rahisi kuongeza au kuondoa
  • Hitilafu ni chache kutokea

5.4 Kuchanganya AND (&&) na OR (||): Tumia Mabano

Unapochanganya masharti ya OR na AND, daima tumia mabano.

// Recommended
if (isLogin && (isAdmin || isOwner)) {
    // process
}

Bila mabano, mpangilio wa tathmini huenda usilingane na nia yako.

// Not recommended (confusing)
if (isLogin && isAdmin || isOwner) {
    // hard to understand
}

Kila sharti ambalo halijulikani mara moja kwa msomaji hubadilika kuwa deni la kiufundi kwa nafsi yako ya baadaye.

5.5 Masharti Yanapokuwa Magumu, Toa Njia

Kama masharti yanakuwa magumu zaidi, njia salama zaidi ni kuyatokana katika njia.

if (isAllowedUser(user)) {
    // process
}

boolean isAllowedUser(User user) {
    return user != null && (user.isAdmin() || user.isOwner());
}

Hii inatoa faida kadhaa:

  • Tamko la if linabaki safi
  • Mantiki inakuwa rahisi kupima
  • Mantiki inaweza kutumika tena

5.6 Muhtasari wa Sehemu

Unapotumia masharti mengi ya OR, kumbuka sheria hizi:

  1. Vunja masharti kadiri yanavyokua
  2. Daima tumia mabano unapochanganya AND na OR
  3. Toa njia wakati mantiki inakuwa ngumu

6. Kipaumbele cha Opereta (Chanzo cha Hitilafu cha Mara kwa Mara)

Katika Java, kila opereta ina kipaumbele (mpangilio wa tathmini) kilichofafanuliwa.
Ukisielewi hili unapojumlisha masharti ya OR, unaweza kuleta hitilafu ambapo msimbo hauendi kama inavyotarajiwa.

6.1 Kipaumbele cha && na ||

Kati ya opereta za kimantiki, mpangilio wa kipaumbele ni:

  1. && (AND)
  2. || (OR)

Hii inamaanisha AND inatathminiwa kabla ya OR.

boolean result = false || true && false;

Usemi huu unatathminiwa kwa mpangilio ufuatao:

  1. true && false → false
  2. false || false → false

Matokeo ya mwisho ni false.

6.2 Mpangilio wa Tathmini kwa Mabano

Unapoongeza mabano, usemi ulio ndani unatathminiwa kwanza.

boolean result = (false || true) && false;

Mpangilio wa tathmini unakuwa:

  1. false || true → true
  2. true && false → false

Matokeo bado ni false, lakini mtiririko wa tathmini ni tofauti kabisa.

6.3 Uelewa wa Kawaida katika Tamko la if

Fikiria tamko la if lifuatalo:

if (isLogin && isAdmin || isOwner) {
    // process
}

Kulingana na sheria za kipaumbele za Java, hii inatafsiriwa kama:

if ((isLogin && isAdmin) || isOwner) {
    // process
}

Kama matokeo:

  • Mtumiaji huenda haijaingia
  • Ikiwa isOwner ni kweli, mchakato bado unatekelezwa

Hii inaweza kusababisha tabia isiyotarajiwa.

6.4 Njia Salama ya Kufanya Nia Yako Iwe Dhahiri

Kama nia yako ni:

“Mtumiaji ameingia, na (ni msimamizi au mmiliki)”

basi daima tumia mabano:

if (isLogin && (isAdmin || isOwner)) {
    // correct
}

Mtindo huu:

  • Ni rahisi kwa wasomaji kuelewa
  • Huhitaji kukumbuka sheria za kipaumbele
  • Ni salama zaidi kwa matengenezo ya baadaye

6.5 Huna Hitaji la Kukumbuka Sheria za Kipaumbele

Makosa ya kawaida ya wanaoanza ni pamoja na:

  • Kujaribu kukumbuka sheria zote za kipaumbele cha opereta
  • Kuwa na desturi ya kuandika masharti bila mabano

Katika maendeleo ya ulimwengu halisi, fuata tu sheria hii:

“Ukikosa uhakika, daima tumia mabano.”

Hilo pekee linatosha.

6.6 Muhtasari wa Sehemu

Pointi kuu kutoka sehemu hii:

  1. && ina kipaumbele kikubwa kuliko ||
  2. Mabano yanazidi kipaumbele
  3. Masharti yasiyo wazi ni hatari
  4. Tumia mabano kwa usomaji na usalama

7. Makosa ya Kawaida (Vizi vya Kawaida na Jinsi ya Kuzima)

Kwa sasa, unapaswa kuelewa misingi na taratibu za opereta ya OR.
Sehemu hii inatambulisha vizi vya kawaida ambavyo wanaoanza wanakutana navyo na njia salama za kuvizuia.

Mengi ya haya ni hali ambapo utawaza, “Kama ningejua hili, ningekuwa nimezuia.”
Hakikisha kuzizukulia angalau mara moja.

7.1 Makosa Yanayosababishwa na Mpangilio wa Ukaguzi wa null Usio Sahihi

Kosa la kawaida zaidi ni kukagua null kwa mpangilio usio sahihi.

Mfano Hatari

if (user.isActive() || user == null) {
    // process
}

Katika msimbo huu:

  • Ikiwa user ni null
  • user.isActive() inatathminwa kwanza

Matokeo yake, NullPointerException hutokea.

Mfano Sahihi (Kutumia Tathmini ya Mzunguko Mfupi)

if (user == null || user.isActive()) {
    // safe
}
  • Ukaguzi wa null uko upande wa kushoto
  • Ikiwa ni kweli, upande wa kulia hautathminwi

Unapotegemea tathmini ya mzunguko mfupi, daima weka masharti salama upande wa kushoto

Kanuni hii ni muhimu sana si tu kwa masharti ya OR, bali pia kwa masharti ya AND.

7.2 Kutumia | Kwa Makosa (Mzunguko Mfupi Haufanyi Kazi)

Kwa sababu zinaonekana sawa, ni rahisi kutumia | badala ya || kwa bahati mbaya.

if (user != null | user.isActive()) {
    // source of bugs
}

Katika kesi hii:

  • Hata kama user != null si kweli
  • user.isActive() huitwa kila wakati

➡ Ikiwa user ni null, kosa litatokea mara moja.

Daima tumia || katika mata ya masharti.
Fanya hii kuwa tabia kali.

7.3 Kuandika Operesheni za Athari za Pembeni Ndani ya Masharti

Pia ni hatari kuandika operesheni zinazobadilisha hali ndani ya masharti.

if (isValid || count++) {
    // some process
}
  • Ikiwa isValid ni kweli
  • count++ haitofanywa

Ukidhani “count daima inaongezeka,” hii inakuwa kosa laini na gumu kugundua.

Suluhisho: Tenganisha Masharti na Vitendo

if (isValid) {
    count++;
}

Au:

count++;
if (isValid) {
    // process
}

Tumia masharti kwa maamuzi pekee

7.4 Masharti ya OR Yasiyosomwa Vizuri Husababisha Vizi vya Baadaye

Sharti lifuatalo linaweza kufanya kazi, lakini ni hatari:

if (a || b && c || d && e) {
    // unclear intent
}
  • Kipaumbele si kinachoeleweka
  • Ni rahisi kuvunjika wakati wa matengenezo

Mfano Ulioboreshwa

boolean condition1 = a || b;
boolean condition2 = c || d;

if (condition1 && condition2) {
    // much clearer
}

7.5 Muhtasari wa Sehemu

Vizi vingi vinavyohusiana na OR vinaangukia katika makundi haya manne:

  1. Mpangilio usio sahihi wa ukaguzi wa null
  2. Kuchanganya | na ||
  3. Kuandika athari za pembeni ndani ya masharti
  4. Kuacha masharti yasiyosomwa kama yalivyo

Kuziepusha haya pekee kutakuweka karibu sana na
msimbo wa Java salama, unaosomwa.

8. Mifano ya Kivitendo kwa Matumizi ya Halisi (Nakili & Jaribu)

Sehemu hii inatambulisha mifano ya masharti ya OR ya vitendo ambayo hutumika sana katika maendeleo halisi.
Kila mfano umeandikwa ili wanaoanza waweze kuunua na kuujaribu moja kwa moja.

8.1 Uthibitishaji wa Ingizo (null au Kamba Tupu)

Unaposhughulikia ingizo la mtumiaji au data za nje, kukagua null na kamba tupu ni jambo la kawaida sana.

if (text == null || text.isEmpty()) {
    System.out.println("Please enter a value");
}
  • Ikiwa text == null ni kweli
  • text.isEmpty() haitathminwi

Muundo salama kwa kutumia tathmini ya mzunguko mfupi.

8.2 Ukaguzi wa Ruhusa (Ruhusu Majukumu Mengi)

Tumia OR kuruhusu kitendo kwa majukumu mengi.

if (isAdmin || isOwner) {
    // allowed users only
}

Unaweza kupanua hii kwa urahisi kadiri majukumu yanavyoongezeka:

if (isAdmin || isOwner || isEditor) {
    // permission granted
}

8.3 Angalia Hali (Acha Ikiwa Hali Yoyote ni Mbaya)

Hali za OR pia ni bora kwa hali ambapo
ikiwa hali yoyote moja ni mbaya, usindikaji unapaswa kusimamishwa.

if (isTimeout || isError || isDisconnected) {
    return;
}
  • Usomaji wa juu
  • Kurudi mapema hufanya mantiki safi

➡ Mfumo wa kawaida sana katika ulimwengu halisi.

8.4 Hali Zilizoundwa Ili Kuepuka Makosa

Tumia OR ili kuita njia kwa usalama kulingana na hali ya kitu.

if (user == null || user.isGuest()) {
    showGuestPage();
}
  • Weka angalia null upande wa kushoto
  • Upande wa kulia unaendeshwa tu wakati ni salama

Hii ni mchanganyiko wa kawaida wa OR na tathmini ya short-circuit.

8.5 OR na Alamisho za Bit (Ambapo | Inafaa)

Kuna hali ambapo unahitaji OR ya bitwise, si OR ya kimantiki.

int READ  = 1; // 0001
int WRITE = 2; // 0010
int EXEC  = 4; // 0100

int permission = READ | WRITE;

Mfumo huu hutumika kuunganisha:

  • alamisho za usanidi
  • ruhusa
  • alamisho za hali

Katika hali hizi, | ndiyo opereta sahihi.

8.6 Muhtasari wa Sehemu

Unapoandika hali za OR katika miradi halisi, weka mawazo haya akilini:

  1. Weka angalia null upande wa kushoto
  2. Panga hali zinazohusiana na OR
  3. Tumia kurudi mapema ili kurahisisha mantiki
  4. Weka hali salama, rahisi, na bila athari za upande

9. Muhtasari (Na Jedwali la Marejeo ya Haraka)

Hadi sasa, tumeshughulikia dhana na matumizi ya hali za OR katika Java kwa undani.
Ili kumaliza, hebu tupange mambo muhimu unayohitaji katika maendeleo halisi.

9.1 Marejeo ya Haraka: || dhidi ya |

OperatorPrimary PurposeShort-CircuitTypical Usage
||Logical ORYesConditional branching (if)
|Bitwise ORNoBit flags, numeric bit operations

Kanuni ya uamuzi ni rahisi sana:

  • Tawi la kisheria → ||
  • Udhibiti wa bit → |

Hakuna sababu nzuri ya kutumia | katika hali za boolean karibu kamwe.

9.2 Kanuni za Msingi za Kuandika Hali za OR

Ili kuandika hali za OR salama katika Java, weka kanuni zifuatazo akilini:

  1. Daima weka angalia null upande wa kushoto
  2. Andika code ukidhani tathmini ya short-circuit
  3. Kamwe usiweke athari za upande ndani ya hali
  4. Gawanya au toa njia wakati hali zinakuwa ngumu
  5. Daima tumia mabano wakati unachanganya AND na OR

Ikiwa utafuata kanuni hizi pekee, hata wanaoanza wanaweza kuandika code salama, yenye hatari ndogo ya Java.

9.3 Hitimisho la Sentensi Moja Wanaoanza Wanapaswa Kukumbuka

Katika sentensi moja, hitimisho la makala hii ni:

Katika Java, tumia || kwa hali za OR, elewa tathmini ya short-circuit, na andika hali kwa mpangilio salama.

Huhitaji kukariri kila kanuni.
Ikiwa unaelewa kwa nini hali zinaandikwa katika mpangilio fulani, code sahihi itafuata kwa asili.

10. FAQ (Masuala Yanayoulizwa Mara Kwa Mara)

10.1 Je, naweza kuandika OR kama or katika Java?

Hapana, huwezi.
Katika Java, hali za OR daima zinaandikwa kwa alama.

  • OR ya kimantiki: ||
  • OR ya bitwise: |

Neno la keyword or halipo katika Java.

10.2 Nitumie nini: || au |?

Daima tumia || katika taarifa za if na tawi la kisheria.

| ni kwa shughuli za bitwise.
Kuitumia katika hali kunalenga tathmini ya short-circuit na mara nyingi husababisha makosa.

10.3 Kwa nini upande wa kulia wa || wakati mwingine hauendeshwi?

Kwa sababu || inatumia tathmini ya short-circuit.

  • Ikiwa upande wa kushoto ni true , matokeo tayari yameamuliwa
  • Upande wa kulia hauathminiwi

Hii ni tabia sahihi kulingana na maelezo ya Java.

10.4 a && b || c inathaminiwa vipi?

Kwa sababu && ina nafasi ya juu kuliko ||, inathaminiwa kama:

(a && b) || c

Ikiwa nia si wazi, daima ongeza mabano.

10.5 Je, ni sawa kutumia | na boolean?

Ni sahihi kisintaksia, lakini inakatishwa tamaa sana.

  • Hakuna tathmini ya short-circuit
  • Usomaji wa chini
  • Rahisi zaidi kuanzisha makosa

Isipokuwa una sababu maalum sana, daima tumia || kwa mantiki ya boolean.

10.6 Lini nitumie OR ya bitwise (|)?

Matumizi ya kawaida yanajumuisha:

  • Kusimamia bendera za ruhusa
  • Kuunganisha thamani za usanidi
  • Kuwakilisha hali kwa kutumia biti

Hizi ni matumizi tofauti kabisa ya tawi la masharti.