Java -da ikkita sanani solishtirishning 4 usuli

Mundarija:

Java -da ikkita sanani solishtirishning 4 usuli
Java -da ikkita sanani solishtirishning 4 usuli

Video: Java -da ikkita sanani solishtirishning 4 usuli

Video: Java -da ikkita sanani solishtirishning 4 usuli
Video: Урок 4. Понимание папок и файлов. Создавайте, редактируйте, скрывайте их. ОБЗОРНЫЙ УРОК. 2024, May
Anonim

Java dasturlash tilida ikkita sanani solishtirishning ko'plab usullari mavjud. Kompyuterlarda sana vaqt birligida raqam bilan (uzun ma'lumot turi) ifodalanadi - 1970 yil 1 yanvardan beri o'tgan millisekundlar soni. Java -da Sana - bu ob'ekt, ya'ni u taqqoslashning bir qancha usullari. Ikkita sanani taqqoslash uchun ishlatiladigan har qanday usul, asosan, ikki sananing vaqt birliklarini solishtirishdir.

Qadam

4 -dan 1 -usul: solishtirishTo -dan foydalanish

4301351 1
4301351 1

Qadam 1. comparTo dan foydalaning

Date obyekti Comparable -ni amalga oshiradi, shuning uchun 2 sanani to'g'ridan -to'g'ri solishtirish usuli bilan solishtirish mumkin. Agar ikkala sanada ham vaqt birligi bir xil bo'lsa, u holda usul nolni qaytaradi. Agar ikkinchi sana birinchisidan kichik bo'lsa, noldan kichik qiymat qaytariladi. Agar ikkinchi sana birinchisidan katta bo'lsa, usul noldan katta qiymatni qaytaradi. Agar ikkala sana bir xil bo'lsa, u holda usul bo'sh qiymatni qaytaradi.

4301351 2
4301351 2

Qadam 2. Bir nechta sana ob'ektlarini yarating

Ularni solishtirishdan oldin bir nechta sana ob'ektlarini yaratish kerak. Buning eng oson usullaridan biri - SimpleDateFormat sinfidan foydalanish. Bu sinf kirish sanasi qiymatini Date obyektiga aylantirishni osonlashtiradi.

    SimpleDateFormat sdf = yangi SimpleDateFormat ("yyyy-MM-dd"). Yangi "Ob'ektlar sanasi" da qiymatni e'lon qilish uchun sanani yaratishda xuddi shu sana formatidan foydalaning. Sana sanasi1 = sdf.parse ("1995-02-23"); // sana1-1995 yil 23 fevral, sana sana2 = sdf.parse ("2001-10-31"); // sana2-2001 yil 31 oktyabr, sana sana3 = sdf.parse ("1995-02-23"); // sana3 - 1995 yil 23 fevral

4301351 3
4301351 3

Qadam 3. Sana ob'ektlarini solishtiring

Quyidagi kod sizga har bir holat uchun misollarni ko'rsatadi - kichik, teng va katta.

    sana1.compareTo (sana2); // sana1 <sana2, 0 dan kam qiymatni qaytaradi date2.compareTo (sana1); // sana2> sana1, 0dan katta qiymatni qaytaradi1 sana1.compareTo (sana3); // sana1 = sana3, shuning uchun konsolda 0 chiqadi

4 -usul 2: Tenglarni ishlatish, Oldin va keyin

4301351 4
4301351 4

Qadam 1. tenglikdan keyin ham, oldin ham ishlating

Sanalarni teng, keyin va oldingi usullar yordamida solishtirish mumkin. Agar ikkita sana bir vaqtning o'zida bir xil qiymatga ega bo'lsa, equals usuli rostini qaytaradi. Quyidagi misol taqqoslash usuli misolida yaratilgan Date obyektidan foydalanadi.

4301351 5
4301351 5

Qadam 2. Oldingi usul bilan solishtiring

Quyidagi kod haqiqiy va noto'g'ri qaytariladigan misolni ko'rsatadi. Agar sana1 sana2 dan oldingi sana bo'lsa, avvalgi usul rostini qaytaradi. Aks holda, avvalgi usul false qaytaradi.

    System.out.print (sana1.dan oldin (sana2)); // qiymatini ko'rsatish '' rost '' System.out.print (date2.before (date2)); // "false" qiymatini qaytaring

4301351 6
4301351 6

Qadam 3. After usuli yordamida solishtiring

Quyidagi kod haqiqiy va noto'g'ri qaytariladigan misolni ko'rsatadi. Agar sana2 sana1 dan keyingi sana bo'lsa, after usuli rostni qaytaradi. Aks holda, after usuli false qaytadi.

    System.out.print (sana2.dan keyin (sana1)); // "haqiqiy" qiymatini ko'rsatish System.out.print (sana1.dan keyin (sana2)); // "noto'g'ri" qiymatini ko'rsatish

4301351 7
4301351 7

4 -qadam. Equals usuli bilan solishtiring

Quyidagi kod haqiqiy va noto'g'ri qaytariladigan misolni ko'rsatadi. Agar ikkala sana teng bo'lsa, equals usuli rostini qaytaradi. Aks holda, equals usuli false qaytaradi.

    System.out.print (date1.equals (sana3)); // "haqiqiy" qiymatini ko'rsatish System.out.print (sana1. teng (sana2)); // "noto'g'ri" qiymatini ko'rsatish

3 -usul 4: Sinf taqvimidan foydalanish

4301351 8
4301351 8

Qadam 1. Sinf taqvimidan foydalaning

Taqvim sinfida, shuningdek, Date sinfida ilgari ta'riflanganlar bilan bir xilda ishlash usullari solishtirishTo, teng, keyin va undan oldin ham mavjud. Agar sana ma'lumotlari sinf taqvimida saqlansa, taqqoslash uchun sanani ajratib olishning hojati yo'q.

4301351 9
4301351 9

Qadam 2. Taqvim misolini yarating

Sinf taqvimidagi usullardan foydalanish uchun bir nechta taqvim misollarini yaratish kerak. Yaxshiyamki, siz avval yaratilgan sana misolidagi qiymatlardan foydalanishingiz mumkin.

    Kalendar kal1 = Calendar.getInstance (); // e'lon cal1 Taqvim cal2 = Calendar.getInstance (); // cal2 kalendarini e'lon qilish cal3 = Calendar.getInstance (); // cal3 ni e'lon qilish cal1.setTime (sana1); // sanani cal1 ga qo'ying cal2.setTime (sana2); cal3.setTime (sana3);

4301351 10
4301351 10

Qadam 3. cal1 va cal2 ni oldingi usul yordamida solishtiring

Quyidagi kod tr qiymatini chiqaradi

    System.out.print (cal1.before (cal2)); // "true" qiymatini qaytaradi

4301351 11
4301351 11

Qadam 4. after1 usuli yordamida cal1 va cal2 ni solishtiring

Quyidagi kod noto'g'ri qaytaradi, chunki cal1 - cal2dan oldingi sana.

    System.out.print (cal1.after (cal2)); // "false" qiymatini qaytaring

4301351 12
4301351 12

5 -qadam. Cal1 va cal2 ni teng usul yordamida solishtiring

Quyidagi kod haqiqiy va noto'g'ri qaytariladigan misolni ko'rsatadi. Shtat taqqoslanadigan taqvim namunasiga bog'liq. Quyidagi kod keyingi satrda "rost", keyin "noto'g'ri" qiymatini qaytaradi.

    System.out.println (cal1.equals (cal3)); // "haqiqiy" qiymatini qaytaring: cal1 == cal3 System.out.print (cal1.equals (cal2)); // "false" qiymatini qaytaring: cal1! = cal2

4 -usul 4: getTime -dan foydalanish

4301351 13
4301351 13

Qadam 1. getTime -dan foydalaning

Siz ikkita sananing vaqt birligi qiymatlarini to'g'ridan -to'g'ri taqqoslashingiz mumkin, garchi oldingi ikkita usulni o'qish osonroq va afzalroq bo'lishi mumkin. Shunday qilib, siz 2 ta ibtidoiy ma'lumotlar turini solishtirasiz, shuning uchun siz "" va "==" operandlaridan foydalanishingiz mumkin.

4301351 14
4301351 14

Qadam 2. Uzoq sonli formatdagi vaqt ob'ektini yarating

Sanalarni taqqoslashdan oldin, ilgari yaratilgan Date ob'ektidan Long Integer qiymatini yaratish kerak. Yaxshiyamki, getTime () usuli buni siz uchun qiladi.

    uzoq vaqt1 = getTime (sana1); // sana1 ibtidoiy vaqtini e'lon qilish1 uzoq vaqt2 = getTime (sana2); // ibtidoiy vaqt2 sana2 qiymatini e'lon qilish

4301351 15
4301351 15

Qadam 3. Taqqoslashdan kamroq bajaring

Bu ikki tamsayı qiymatini solishtirish uchun (<) dan kam operanddan foydalaning. Vaqt1 vaqt2dan kam bo'lgani uchun birinchi xabar paydo bo'ladi. Else iborasi sintaksisni bajarish uchun kiritilgan.

    if (time1 <time2) {System.out.println ("sana1 - sanadan oldingi sana"); // ko'rsatiladi, chunki time1 <time2} else {System.out.println ("sana1 sanadan oldingi sana emas"); }

4301351 16
4301351 16

Qadam 4. Taqqoslashdan ko'ra kattaroq ishni bajaring

Bu ikki tamsayı qiymatini solishtirish uchun (>) dan katta operanddan foydalaning. Vaqt1 vaqt2dan katta bo'lgani uchun birinchi xabar paydo bo'ladi. Else iborasi sintaksisni bajarish uchun kiritilgan.

    if (time2> time1) {System.out.println ("sana2 - sanadan keyingi sana"); // ko'rsatiladi, chunki vaqt2> vaqt1} boshqa {System.out.println ("sana2 sanadan keyingi sana emas"); }

4301351 17
4301351 17

5 -qadam. Teng taqqoslashni bajaring

Bu ikkita tamsayılarni solishtirish uchun qiymatlar tengligini tekshirish uchun operand funktsiyasidan foydalaning (==). Vaqt1 vaqt3 ga teng bo'lgani uchun birinchi xabar paydo bo'ladi. Agar dastur oqimi else ifodasiga kirsa, bu ikki vaqt bir xil qiymatga ega emasligini bildiradi.

    if (time1 == time2) {System.out.println ("ikkala sana bir xil"); } else {System.out.println ("1 -chi 2 -chi bilan bir xil emas"); // ko'rsatiladi, chunki vaqt1! = vaqt2}

Tavsiya: