Муқоиса кардани санаҳои Java

Муаллиф: Roger Morrison
Санаи Таъсис: 24 Сентябр 2021
Навсозӣ: 1 Июл 2024
Anonim
Sinxronlashtirilgan va ReadWriteLock va StampedLock [Java Multithreading]
Видео: Sinxronlashtirilgan va ReadWriteLock va StampedLock [Java Multithreading]

Мундариҷа

Якчанд роҳҳои муқоисаи санаҳо дар Java мавҷуданд. Дар дохили кишвар, сана ҳамчун нуқтаи вақт (миқдори дароз) - миқдори миллисекундҳое, ки аз 1 январи соли 1970 гузаштаанд, ифода карда мешавад. Дар Java сана санаи объекти Date мебошад, ки маънои он дорои усулҳои зиёди муқоисаи санаҳо мебошад. Ҳар як усули муқоисаи ду сана асосан вақти гузаштаи ҳарду санаро муқоиса мекунад.

Ба қадам

Усули 1 аз 4: Истифодаи фармони "ComparTo"

  1. ComparTo -ро истифода баред. Сана ComparableDate> -ро татбиқ мекунад ва аз ин рӯ бо истифода аз усули ComparTo ду санаро мустақиман бо ҳам муқоиса кардан мумкин аст. Агар санаҳо ҳамон лаҳзаи вақтро нишон диҳанд, усул сифр бармегардад. Агар санаи муқоисашаванда пеш аз далели сана бошад, пас арзиши манфӣ баргардонида мешавад. Агар санаи муқоисашуда санаи дертар аз санаи далели сана бошад, пас арзиши мусбат баргардонида мешавад. Агар санаҳо якхела бошанд, сифр баргардонида мешавад.
  2. Сохтани объектҳои Сана. Пеш аз оғози муқоиса ба шумо, бояд ҳар як объекти таърихро эҷод кунед. Яке аз роҳҳои ин татбиқи синфи SimpleDateFormat мебошад. Ин ба шумо имкон медиҳад, ки санаҳоро ба объектҳои Date ба осонӣ ворид кунед.

      SimpleDateFormat sdf = SimpleDateFormat нав ("yyyy-MM-dd"); // Барои эълони арзишҳо дар объектҳои санаи нав.Ҳангоми эҷоди санаҳо аз ҳамон формати сана истифода кунед Date date1 = sdf.parse ("1995-02-23"); // date1 23 феврали соли 1995 аст Санаи date2 = sdf.parse ("2001-10-31"); // date2 31 октябри соли 2001 Санаи date3 = sdf.parse ("1995-02-23"); // дата3 23 феврали соли 1995 аст

  3. Объектҳои таърихро муқоиса кунед. Дар зер ҳар як ҳолат нишон дода шудааст - камтар, баробар ва бузургтар аз.

      date1.compareTo (date2); // date1 date2, камтар аз 0 date2.compareTo (date1); // date2> date1, бузургтар аз 0 date1.compareTo (date3) бармегардад; // date1 = date3, 0 бар мегардонад

Усули 2 аз 4: Истифодаи усулҳои "баробар, пас ва пеш"

  1. Пас аз ва пеш аз он, баробарро истифода баред. Санаҳоро бо истифодаи усулҳои баробар, пас ва пеш аз он бо ҳам муқоиса кардан мумкин аст. Агар ду сана як вақтро нишон диҳанд, усули баробар ба "true" бармегардад. Намунаҳо санаҳои қаблан сохташударо тавассути усули ComparTo истифода мебаранд.
  2. Бо истифодаи усули пеш муқоиса кунед. Рамзи зерин як ҳолати рост ва дурӯғро нишон медиҳад. Агар date1 аз date2 барвақттар бошад, натиҷа дуруст аст. Агар не, пеш аз бармегардад бардурӯғ.

      System.out.print (date1.before (date2)); // чоп кардани System.out.print true (date2.before (date2)); // чопи бардурӯғ

  3. Инро бо усули баъдӣ муқоиса кунед. Рамзи зерин як ҳолати рост ва дурӯғро нишон медиҳад. Агар date2 аз date1 дертар бошад, пас пас true месозад. Агар не, пас бармегардад бардурӯғ.

      System.out.print (date2.after (date1)); // чоп кардани System.out.print true (date1.after (date2)); // чопи бардурӯғ

  4. Бо усули баробар муқоиса кунед. Рамзи зерин як ҳолати рост ва дурӯғро нишон медиҳад. Агар санаҳо якхела бошанд, баробар ба ҳақиқӣ бармегардад. Агар не, баробар ба бардурӯғ бармегардад.

      System.out.print (date1.equals (date3)); // true true System.out.print (date1.equals (date2)); // чоп кардани бардурӯғ

Усули 3 аз 4: Истифодаи синфи тақвим

  1. Синфи Тақвимро истифода баред. Синфи Тақвим инчунин дорои ComparTo, ба, пас ва пеш аз усулҳо дорад, ки ҳамон тавре кор мекунанд, ки дар синфи сана дар боло тавсиф шудаанд. Пас, агар маълумоти сана дар тақвим нигоҳ дошта шавад, барои истихроҷи "сана" ҳоҷат нест, танҳо барои муқоисаи ду сана.
  2. Намунаи Тақвимро эҷод кунед. Барои истифодаи усулҳои Тақвим ба шумо якчанд намунаи тақвим лозим аст. Хушбахтона, шумо метавонед вақтро тавре истифода баред, ки инстинтҳои сана тавлид кардаанд.

      Тақвими cal1 = Calendar.getInstance (); // cal1 -ро эълон мекунад cal2 календар = Calendar.getInstance (); // cal2 календари эълон мекунад cal3 = Calendar.getInstance (); // cal3 cal1.setTime (date1) эълон мекунад; // сана ба cal1 cal2.setTime (date2) -ро татбиқ мекунад; cal3.setTime (date3);

  3. Cal1 ва cal2 -ро бо истифодаи пеш муқоиса кунед. Рамзи зерин ҳақиқиро бар мегардонад, зеро cal1 аз cal2 барвақттар аст.

      System.out.print (cal1.before (cal2)); // дуруст чоп кунед

  4. Cal1 ва cal2 -ро бо истифодаи пас муқоиса кунед. Рамзи поён бардурӯғ бармегардад, зеро cal1 аз cal2 барвақттар аст.

      System.out.print (cal1.after (cal2)); // чопи бардурӯғ

  5. Cal1 ва cal2 -ро бо истифодаи баробар муқоиса кунед. Рамзи зерин намунаи ҳам рост ва ҳам дурӯғро нишон медиҳад. Шарт аз муқоисаи ҳолатҳои тақвимӣ вобаста аст. Рамзи дар поён овардашуда "true" ва пас "false" дар сатри оянда.

      System.out.println (cal1.equals (cal3)); // дуруст чоп кунед: cal1 == cal3 System.out.print (cal1.equals (cal2)); // чоп кунед false: cal1! = cal2

Усули 4 аз 4: Истифодаи усули "getTime"

  1. GetTime -ро истифода баред. Инчунин мустақиман муқоисаи ду нуқтаи вақт имконпазир аст, гарчанде ки ҳама гуна равишҳои дар боло овардашуда эҳтимолан натиҷаҳои бештар хонданӣ медиҳанд ва ба ин тариқ бартарӣ дода мешаванд. Ин муқоисаи ду намуди ибтидоии додаҳо мебошад, бинобар ин бо "", ">" ва "==" анҷом додан мумкин аст.
  2. Объектҳои вақти "дароз" -ро эҷод кунед. Пеш аз он ки санаҳоро муқоиса кунед, шумо бояд аз маълумоти объектҳои санаи қаблан сохташуда ададҳои дарозро созед. Хушбахтона, усули getTime () қисми зиёди корҳоро барои шумо иҷро мекунад.

      long time1 = getTime (date1); // вақти ибтидоии date1 long1 вақт2 = getTime (date2) эълон мекунад; // вақти ибтидоии2 санаи2 эълон мекунад

  3. Муодилаи "камтар аз" -ро истифода баред. Барои муқоисаи ин ду арзиши бутун "" камтар "-ро истифода баред. Азбаски вақт1 аз вақт2 камтар аст, хабари аввал бояд дар экран чоп карда шавад. Изҳори else барои синтаксиси дуруст дохил карда шудааст.

      if (time1 time2) {System.out.println ("date1 барвақттар аз date2"); // чоп кунед, зеро time1 time2} else {System.out.println ("date1 дертар ё ба date2 баробар аст"); }

  4. Муқоисаи "бузургтар аз" -ро анҷом диҳед. Барои муқоисаи ин ду адад "" аз "аломати (>) истифода баред. Азбаски вақт1 аз вақт2 зиёдтар аст, хабари аввал дар экран чоп карда мешавад. Изҳори else барои синтаксиси дуруст дохил карда шудааст.

      if (time2> time1) {System.out.println ("date2 пас аз date1 меояд"); // чоп кунед, зеро time2> time1} else {System.out.println ("date2 барвақттар аст ё ба date1 баробар аст"); }

  5. Муқоисаи "баробар" -ро анҷом диҳед. Барои муқоисаи ин ду адад рамзи (==) -ро истифода баред. Азбаски вақт1 ба вақти 3 баробар аст, хабари аввал бояд чоп карда шавад. Агар барнома ба изҳороти else расад, ин маънои онро дорад, ки замонҳо яксон нестанд.

      if (time1 == time2) {System.out.println ("Санаҳо баробаранд"); } else {System.out.println ("Санаҳо баробар нестанд"); // чоп кунед, зеро time1! = time2}