JavaRush /Блоги Java /Random-TG /Top 50 Саволҳо ва Ҷавобҳои Мусоҳибаи асосии Java. Қисми 2...
Roman Beekeeper
Сатҳи

Top 50 Саволҳо ва Ҷавобҳои Мусоҳибаи асосии Java. Қисми 2

Дар гурӯҳ нашр шудааст
Top 50 Саволҳо ва Ҷавобҳои Мусоҳибаи асосии Java. Қисми 1 Top 50 Саволҳо ва Ҷавобҳои Мусоҳибаи асосии Java.  Қисми 2 - 1

Маҷмӯаҳо

25. Маҷмӯаҳо дар Java чӣ маъно доранд?

Коллексия чаҳорчӯбаест, ки барои нигоҳдорӣ ва коркарди an objectҳо пешбинӣ шудааст. Барои иҷрои амалҳои зерин истифода мешавад:
  • ҷустуҷӯ;
  • ҷудокунӣ;
  • манипуляция;
  • илова;
  • нест кардан.
Ҳама синфҳо ва интерфейсҳо барои чаҳорчӯбаи Коллексия дар java.utilбаста ҷойгиранд.

26. Кадом синфҳо ва интерфейсҳо дар чаҳорчӯбаи Коллексия мавҷуданд?

Интерфейсҳо:
  • Коллексия;
  • Рӯйхат;
  • маҷмӯи;
  • Харита;
  • Маҷмӯи мураттабшуда;
  • Харитаи мураттабшуда;
  • Навбат.
Синфҳо:
  • Рӯйхатҳо:
    1. ArrayList;
    2. LinkedList;
    3. Вектор (кӯҳнашуда).
  • Маҷмӯаҳо:
    1. HashSet;
    2. LinkedHashSet;
    3. Tree Set.
  • Харитаҳо:
    1. HashMap
    2. TreeMap
    3. HashTable (кӯҳнашуда)
    4. LinkedHashMap
  • Навбат
    1. Навбати афзалиятнок.

27. Дар маҷмӯаҳо ҷудошуда ва ба тартиб овардашуда чӣ маъно доранд?

Фармуд:

Ин маънои онро дорад, ки ашёе, ки дар коллексия нигоҳ дошта мешаванд, ба арзишҳои ба коллексия иловашуда асос ёфтааст. Бо ин роҳ мо метавонем арзишҳоро аз коллексия бо тартиби муайян такрор кунем. Ба ибораи дигар, ин маънои онро дорад, ки унсурҳои коллексия тартиби махсуси худро доранд, ки мувофиқи он ҷойгир карда мешаванд. Барои беҳтар фаҳмидани коллексия, ки фармоиш дода нашудааст, унсурҳои худро бо тартиби тасодуфӣ нигоҳ медорад. Масалан, Set.

Мураттаб:

Ин маънои онро дорад, ки як гурӯҳи элементҳо дар асоси маълумоти элементи коллексия ба коллексия ҷудо карда мешаванд. Яъне, на танҳо ҷамъоварӣ тартиб дода мешавад, балки тартиби элементҳо низ аз арзишҳои онҳо вобаста аст. Ин тартиб метавонад тағир ёбад, агар шумо аз рӯи арзиши унсури дигар ҷудо кунед.

28. Кадом коллексияҳо бо интерфейси List мавҷуданд? Шумо бо List чӣ гуна кор мекунед?

Қиматҳои элементҳо дар варақ ба индекси онҳо асос ёфтаанд - онҳо аз рӯи индекс тартиб дода мешаванд. Такрори элементҳо иҷозат дода мешавад (яъне шумо метавонед як an objectро якчанд маротиба ба коллексия илова кунед ва хуб мешавад).

ArrayList:

Маҷмӯаи маъмултарин. Аслан, он массивест, ки андозаи ба таври динамикӣ васеъшаванда аст. Кори идоракунии андозаи массив ба коллексия вобаста аст. Барои мо муҳим аст, ки дарк кунем, ки дар аксари мавридҳо он чизест, ки мо бояд истифода барем. Хусусиятҳо:
  • ҷустуҷӯи зуд ва ҷустуҷӯи индекси зуд;
  • коллексия аз рӯи индекс тартиб дода мешавад, аммо мураттаб карда нашудааст;
  • интерфейси RandomAccess -ро амалӣ мекунад;
  • охиста-охиста ба мобайни руйхат илова карда мешавад.
Мисол:
public class A {

   public static void main(String[] args) {
       ArrayList names = new ArrayList<>();
       names.add("John");
       names.add("John");
       names.add("Roman");
       names.add("Ivan");
   }

}
>> баромад

   [John, John, Roman, Ivan]
Натиҷа нишон медиҳад, ки ин унсурҳои такроршаванда мебошанд. Онҳо бо тартиби сабтшуда нишон дода мешаванд. Боз чӣ хондан лозим аст? Бале, маълумоти зиёд вуҷуд дорад, ба шумо ҳатто лозим нест, ки JavaRush-ро тарк кунед:

Рӯйхати алоқаманд:

Ин маҷмӯаест, ки дар он ҳар як элемент ба унсурҳои қаблӣ ва оянда пайванд дорад. Ин пайвандҳо ба шумо имкон медиҳанд, ки аз як элемент ба элементи дигар гузаред. Ҳангоми илова кардани элемент, истинодҳо ба унсурҳои қаблӣ ва оянда тағир меёбанд: Top 50 Саволҳо ва Ҷавобҳои Мусоҳибаи асосии Java.  Қисми 2 - 2
  • элементҳо ба ҳам пайвастанд, яъне рӯйхати дукарата алоқаманд амалӣ карда мешавад;
  • суръати умумии кор назар ба ArrayList ба таври назаррас пасттар аст;
  • интихоби аъло барои шумораи зиёди дохилкунӣ ва ҳазф ба мобайни массив;
  • интерфейсҳои рӯйхатҳои Queue ва Deque -ро амалӣ мекунад ва аз ин рӯ усулҳои кори онҳоро дорад.
Мисол:
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("One");
linkedList.add("Two");
linkedList.add("Three");

29. Дар бораи маҷмӯаи Харитаҳо ва татбиқи он ба мо нақл кунед?

Харита маҷмӯи арзишҳои калидӣ мебошад. Калиди беназир ва арзише мавҷуд аст, ки ба ин арзиш мувофиқат мекунад. equals()Усулҳо инчунин hashcode()барои муайян кардани ягонагии калид истифода мешаванд .

HashMap:

  • мураттаб ё тартиб дода нашудааст;
  • истифода бурда мешавад, агар тартиб ва ҷудокунӣ муҳим набошад;
  • калиди нулро дастгирӣ мекунад.
Мисол:
public class CollectionExample {

   public static void main(String[] args) {
       HashMap positions = new HashMap<>();
       positions.put("junior", "Ivan");
       positions.put("middle", "Roman");
       positions.put("senior", "Vasily");
       positions.put("team lead", "Anton");
       positions.put("arthitect", "Andrew");
       positions.put("senior", "John");
       System.out.println(positions);
   }
}

// вывод в консоль
// {junior=Ivan, middle=Roman, senior=John, team lead=Anton, arthitect=Andrew}
Калидҳо ҳамеша беназиранд, аз ин рӯ танҳо як пиронсол сабт карда мешавад.

LinkedHashMap:

  • тартиби воридкуниро нигоҳ медорад;
  • нисбат ба HashMap сусттар;
  • Интизор меравад, ки итератсия нисбат ба HashMap тезтар бошад.
Мисол:
public class CollectionExample {

   public static void main(String[] args) {
       LinkedHashMap<String, String> positions = new LinkedHashMap<>();
       positions.put("junior", "Ivan");
       positions.put("middle", "Roman");
       positions.put("senior", "Vasily");
       positions.put("team lead", "Anton");
       positions.put("arthitect", "Andrew");
       positions.put("senior", "John");
       System.out.println(positions);
   }
}

// вывод в консоль
// {junior=Ivan, middle=Roman, senior=John, team lead=Anton, arthitect=Andrew}

Харитаи Tree:

Татбиқи харитае, ки сабтҳоро мувофиқи тартиби табиии калидҳояшон мураттаб нигоҳ медорад, ё беҳтараш бо истифода аз муқоисакунанда, агар он дар созанда ҳангоми сохтани харита таъмин бошад. Мисол:
  1. Бе муқоисакунанда

    public class CollectionExample {
    
       public static void main(String[] args) {
           TreeMap<Integer, String> positions = new TreeMap<>();
           positions.put(1, "Ivan");
           positions.put(3, "Roman");
           positions.put(2, "Vasily");
           positions.put(10, "Anton");
           positions.put(7, "Andrew");
           positions.put(1, "John");
           System.out.println(positions);
       }
    }
    
    // вывод в консоль
    // {1=John, 2=Vasily, 3=Roman, 7=Andrew, 10=Anton}
  2. Бо муқоисакунанда

    public class CollectionExample {
    
       public static void main(String[] args) {
           //используем реализацию Strategy Pattern'a и добавим компаратор:
           TreeMap<Integer, String> positions = new TreeMap<>(Comparator.reverseOrder());
           positions.put(1, "Ivan");
           positions.put(3, "Roman");
           positions.put(2, "Vasily");
           positions.put(10, "Anton");
           positions.put(7, "Andrew");
           positions.put(1, "John");
           System.out.println(positions);
       }
    }
    
    // вывод в консоль
    // {10=Anton, 7=Andrew, 3=Roman, 2=Vasily, 1=John}
Мо мебинем, ки мураттабкунӣ бо тартиби афзоиш ҳамчун стандарт амалӣ карда мешавад, аммо онро бо илова кардани муқоисакунанда ба конструктор тағир додан мумкин аст. TreeMap дар ин ҷо хуб тавсиф шудааст .

30. Дар бораи коллексияи Set ва татбиқи он ба мо нақл кунед?

Маҷмӯа маҷмӯи унсурҳои беназир аст ва ин хусусияти асосии он аст. Яъне, Set имкон намедиҳад, ки ҳамон элементҳо такрор шаванд. Дар ин ҷо муҳим аст, ки an objectҳое, ки илова карда мешаванд, усули амалӣ дошта бошанд equals .

HashSet:

  • мураттаб ё тартиб дода нашудааст. Дар зери сарпӯш як HashMap бо ҷойнишин барои арзиш мавҷуд аст. Худатон бубинед;)
  • барои илова кардани an objectҳо hashCode -ро истифода мебарад;
  • Он бояд вақте истифода шавад, ки шумо бояд an objectҳои беназир дошта бошед ва тартиби онҳо муҳим нест.
Мисол:
public class CollectionExample {

   public static void main(String[] args) {
       HashSet<String> positions = new HashSet<>();
       positions.add("junior");
       positions.add("junior");
       positions.add("middle");
       positions.add("senior");
       positions.add("team lead");
       positions.add("architect");
       System.out.println(positions);
   }
}

// вывод в консоль
// [senior, middle, team lead, architect, junior]
Дар ин ҷо шумо мебинед, ки унсури "ҷунҷӣ", ки ду маротиба илова карда шудааст, танҳо дар як маврид мавҷуд аст. Ва тартиб ҳамон тавре ки ҳангоми илова кардан нест.

LinkedHashSet:

  • versionи фармоишии HashSet;
  • рӯйхати дукарата алоқамандро барои ҳама унсурҳо дастгирӣ мекунад;
  • Онро вақте истифода баред, ки ба шумо дар такрори худ фармоиш лозим аст.
Мисол:
public class CollectionExample {

   public static void main(String[] args) {
       LinkedHashSet<String> positions = new LinkedHashSet<>();
       positions.add("junior");
       positions.add("junior");
       positions.add("middle");
       positions.add("senior");
       positions.add("team lead");
       positions.add("architect");
       System.out.println(positions);
   }
}

// вывод в консоль
// [senior, middle, team lead, architect, junior]

Маҷмӯи дарахтон:

  • яке аз ду коллексияи ҷудошуда;
  • сохтори дарахти сурх-сиёҳро истифода мебарад ва кафолат медиҳад, ки элементҳо бо тартиби болоравӣ бошанд;
  • Дар зери сарпӯш он TreeMap бо ноустувор оид ба арзишҳо мебошад. Ва унсурҳои TreeSet калидҳои TreeMap мебошанд (инчунин нигаред;)).
Мисол:
public class CollectionExample {

   public static void main(String[] args) {
       TreeSet<String> positions = new TreeSet<>();
       positions.add("junior");
       positions.add("junior");
       positions.add("middle");
       positions.add("senior");
       positions.add("team lead");
       positions.add("architect");
       System.out.println(positions);
   }
}

// вывод в консоль
// [architect, junior, middle, senior, team lead]

Истисноҳо

31. Истисно чист?

Истисно мушкилотест, ки метавонад дар вақти кор рух диҳад. Ин як ҳолати истисноӣ аст , ки бо ягон сабаб ба вуҷуд меояд. Диаграммаи мероси истисноӣ чунин менамояд (шумо бояд онро аз ёд донед;)): Top 50 Саволҳо ва Ҷавобҳои Мусоҳибаи асосии Java.  Қисми 2 - 3Диаграмма нишон медиҳад, ки дар маҷмӯъ, ҳама истисноҳо ба ду гурӯҳ тақсим мешаванд - истисноҳо ва хато. Хатогӣ - JVMs барои нишон додани хатогиҳо истифода мешаванд, ки баъд аз он барнома дигар маъно надорад. Масалан, StackOverFlowError, ки мегӯяд, ки стек пур аст ва барнома дигар кор карда наметавонад. Истисно - истисноҳое, ки ба таври барномавӣ дар code тавлид мешаванд. Истисноҳои гуногун мавҷуданд, санҷидашуда ва тафтишнашуда, аммо чизи асосӣ ин аст, ки онҳо вуҷуд доранд ва онҳоро дастгир кардан мумкин аст ва барнома метавонад корашро идома диҳад. Истисноҳо, дар навбати худ, минбаъд ба онҳое тақсим мешаванд, ки аз RuntimeException ва дигар наслҳои Exception мерос мегиранд. Дар ин бора маълумоти кофӣ мавҷуд аст. Мо дар бораи он, ки чӣ гуна истисноҳои санҷидашуда/бесанҷидашуда дар зер гап мезанем.

32. Чӣ тавр JVM истисноҳоро идора мекунад?

Он чӣ гуна кор мекунад? Ҳамин ки истисно дар ҷое партофта мешавад, вақти корӣ Объекти Истисноро эҷод мекунад (ҳамчун ExcObj ишора мешавад). Он тамоми маълумоти барои кор заруриро нигоҳ медорад - истиснои худи партофташуда ва ҷои он. Эҷод ExcObjва интиқол ба вақти корӣ чизе ҷуз "партофтани истисно" нест. ExcObjдорои усулҳое мебошад, ки онҳоро барои расидан ба ҷойе, ки истисно партофта шудааст, истифода бурдан мумкин аст. Ин маҷмӯи усулҳо Call Stack номида мешаванд. Баъдан, системаи вақти корӣ усулеро дар Stack Call меҷӯяд, ки метавонад истиснои моро ҳал кунад. Агар он коркардкунандаи мувофиқ пайдо кунад, яъне навъи истисно ба навъи коркардкунанда мувофиқат кунад, ҳама чиз хуб аст. Агар он онро наёбад, вақти корӣ ҳама чизро ба коркардкунандаи истиснои пешфарз мегузарад, ки посух омода мекунад ва хориҷ мешавад. Чӣ тавр он ба таври визуалӣ ба назар мерасад:
/**
* Пример, в котором показываются две опции — когда находится обработчик для исключения и когда нет.
*/
class ThrowerExceptionExample {

   public static void main(String[] args) throws IllegalAccessException {

       ThrowerExceptionExample example = new ThrowerExceptionExample();

       System.out.println(example.populateString());
   }

   /**
    * Здесь происходит перехват одного из возможных исключений — {@link IOException}.
    * А вот второй будет пробрасываться дальше вверх по вызову.
    */
   private String populateString() throws IllegalAccessException {
       try {
           return randomThrower();
       } catch (IOException e) {
           return "Caught IOException";
       }
   }

   /**
    * Здесь две опции: or бросается {@link IOException} or {@link IllegalAccessException}.
    * Выбирается случайным образом.
    */
   private String randomThrower() throws IOException, IllegalAccessException {
       if (new Random().nextBoolean()) {
           throw new IOException();
       } else {
           throw new IllegalAccessException();
       }
   }
}
Дар ҳолати мо, CallStack ба таври схематикӣ чунин хоҳад буд:

randomThrower() => populateString() => main(String[] args)
Ду вариант вуҷуд дорад: як ё дигар истисно ба таври тасодуфӣ партофта мешавад. Барои IOException ҳама чиз хуб аст, агар он тавлид шуда бошад, пас натиҷаи кор чунин хоҳад буд: "Caught IOException". Аммо агар истиснои дуюме мавҷуд бошад, ки барои он коркардкунанда мавҷуд нест, барнома бо натиҷаи зерин қатъ мешавад:

Exception in thread "main" java.lang.IllegalAccessException
  at ThrowerExceptionExample.randomThrower(CollectionExample.java:38)
  at ThrowerExceptionExample.populateString(CollectionExample.java:24)
  at ThrowerExceptionExample.main(CollectionExample.java:15)

33. Чӣ тавр барномасозон истисноҳоро ҳал мекунанд?

Дар саволҳои дар боло овардашуда мо аллакай калимаҳои калидиро барои кор бо истисноҳо истифода кардем, ҳоло мо бояд дар бораи онҳо муфассалтар сӯҳбат кунем. Калимаҳои калидӣ кадомҳоянд?
  • кушиш кунед
  • сайд кардан
  • партофтан
  • мепартояд
  • нихоят
Қайд кардан муҳим аст, ки сайд кардан, партофтан ва партофтанро танҳо бо java.lang.Throwable истифода бурдан мумкин аст. Ин бо дигар намудҳо кор намекунад. Акнун мо кӯшиш мекунем, дастгир ва ниҳоят муҳокима хоҳем кард.
  • try-catch-finallyяк сохторест, ки ба шумо имкон медиҳад, ки истисноро дуруст сайд кунед ва идора кунед.
  • try- танҳо як вақт вуҷуд дошта метавонад, дар он ҷо мантиқ рӯй медиҳад;
  • catch— блоке, ки ягон намуди истисноро мегирад; метавонад шумораи зиёди онҳо бошад. Масалан, блоки озмоиш якчанд истисноҳоро мепартояд, ки бо ҳамдигар ҳеҷ иртиботе надоранд;
  • finally- "ниҳоят" ин блок. Ин блокест, ки дар ҳама ҳолат иҷро карда мешавад, новобаста аз он, ки дар кӯшиш, сайд чӣ кор карда мешавад.
Чунин ба назар мерасад:
try {
   // сюда передают тот code, который может вызвать исключение.
} catch (IOException e) {
   // первый catch блок, который принимает IOException и все его подтипы(потомки).
   // Например, нет file при чтении, выпадает FileNotFoundException, и мы уже соответствующе
   // обрабатываем это.
} catch (IllegalAccessException e) {
   // если нужно, можно добавить больше одного catch блока, в этом нет проблем.
} catch (OneException | TwoException e) {
   // можно даже объединять несколько в один блок
} catch (Throwable t) {
   // а можно сказать, что мы принимаем ВСЁ))))
} finally {
   // этот блок может быть, а может и не быть.
   // и он точно выполнится.
}
Тавсифи мисолро бодиққат хонед ва ҳама чиз равшан хоҳад шуд)

34. партоед ва партоед дар Java

партофтан

throwвақте истифода мешавад, ки ба шумо лозим аст, ки ба таври возеҳ як истиснои нав эҷод кунед. Он барои эҷод ва партофтани истисноҳои фармоишӣ истифода мешавад. Масалан, истисноҳои марбут ба тасдиқ. Одатан, барои тасдиқ онҳо аз RuntimeException. Мисол:
// пример пробрасывания исключения
throw new RuntimeException("because I can :D");
Муҳим он аст, ки ин сохтмон танҳо аз ҷониби чизе истифода мешавад, ки аз Throwable. Яъне шумо инро гуфта наметавонед:
throw new String("How тебе такое, Илон Маск?");
Сипас, кори ришта қатъ карда мешавад ва ҷустуҷӯ барои коркардкунандае оғоз мешавад, ки метавонад онро коркард кунад. Вақте ки он онро наёфт, он ба усуле, ки онро даъват кардааст, меравад ва аз ин рӯ ҷустуҷӯ то он даме, ки коркардкунандаи мувофиқро пайдо кунад ё барномаро иҷро кунад, дар сатри зангҳо боло меравад. Биёед бубинем:
// Пример, который демонстрирует работу throw
class ThrowExample {

   void willThrow() throws IOException {
       throw new IOException("Because I Can!");
   }

   void doSomething() {
       System.out.println("Doing something");
       try {
           willThrow();
       } catch (IOException e) {
           System.out.println("IOException was successfully handled.");
       }
   }

   public static void main(String args[]) {
       ThrowExample throwExample = new ThrowExample();
       throwExample.doSomething();
   }
}
Агар мо барномаро иҷро кунем, мо натиҷаи зеринро мегирем:

Doing something
IOException was successfully handled.

мепартояд

throws- механизме, ки тавассути он усул метавонад як ё якчанд истисноҳоро партояд. Онҳо бо вергул ҷудо карда мешаванд. Биёед бубинем, ки ин чӣ қадар осон ва содда аст:
private Object willThrow() throws RuntimeException, IOException, FileNotFoundException
Ғайр аз он, қайд кардан муҳим аст, ки ҳам истисноҳои тафтишшуда ва ҳам тафтишнашуда вуҷуд доранд. Албатта, истисноҳои тафтишнашуда ба -ро илова кардан мумкин нест throws, аммо одоби хуб чизи дигаре мегӯянд. Агар инҳо тафтишшаванда бошанд, пас бо истифода аз усуле, ки онҳоро тавлид мекунад, ба шумо лозим аст, ки бо кадом роҳ онро коркард кунед. Ду вариант вуҷуд дорад:
  1. try-catchБо истиснои мероси мувофиқ ва боло нависед .
  2. Онро throwsмаҳз ҳамин тавр истифода баред, то ягон каси дигар аллакай ин мушкилот дошта бошад: D

35. Истисноҳои санҷидашуда ва номуайяншуда дар Java

Дар Java ду намуди истисно вуҷуд дорад - санҷидашуда ва тафтишнашуда.

Истисноҳои тафтишшуда:

Инҳо истисноҳо мебошанд, ки дар вақти тартибдиҳӣ тафтиш карда мешаванд. Агар ягон code дар усул дар давоми истисно истиснои тафтишшударо партояд, усул бояд ё онро бо истифода аз - коркард кунад try-catchё онро минбаъд интиқол диҳад. Масалан, ки тасвирро аз роҳи "/users/romankh3/image.png" мехонад, онро навсозӣ мекунад. бо ягон роҳ (барои мо ин муҳим нест) ва онро баргардонад.
class CheckedImageExample {
   public static void main(String[] args) {
       File imageFile = new File("/users/romankh3/image.png");
       BufferedImage image = ImageIO.read(imageFile);
       updateAndSaveImage(image, imageFile);
   }

   private static void updateAndSaveImage(BufferedImage image, File imageFile) {
       ImageIO.write(image, "png", imageFile);
   }
}
Чунин code тартиб дода намешавад, зеро усулҳои статикӣ IOException-ро ImageIO.read()мепартоянд , ки тафтиш карда мешавад ва бояд мувофиқи он кор карда шавад. ImageIO.write()Дар ин ҷо ду вариант вуҷуд дорад, ки мо аллакай дар боло муҳокима кардем: ё истифода баред try-catch, ё ба пеш. Барои беҳтар азхуд кардан, мо ину он мекунем. Яъне, updateAndSaveмо онро танҳо дар усул интиқол медиҳем ва сипас онро дар усули асосӣ истифода мебарем try-catch:
class CheckedImageExample {
   public static void main(String[] args) {
       File imageFile = new File("/users/romankh3/image.png");
       try {
           BufferedImage image = ImageIO.read(imageFile);
           updateAndSaveImage(image, imageFile);
       } catch (IOException e) {
           e.printStackTrace();
       }
   }

   private static void updateAndSaveImage(BufferedImage image, File imageFile) throws IOException {
       ImageIO.write(image, "png", imageFile);
   }
}

Истисноҳои тафтишнашуда:

Инҳо истисноҳоянд, ки дар марҳилаи таҳия тафтиш карда намешаванд. Яъне, метод метавонад RuntimeException тавлид кунад, аммо компилятор ба шумо хотиррасон намекунад, ки бо ягон роҳ онро идора кунед. Тавре ки дар зер нишон дода шудааст, мо ҳама чизеро дорем, ки аз RuntimeException мерос гирифтаанд ва Хатогӣ санҷида нашудааст. Top 50 Саволҳо ва Ҷавобҳои Мусоҳибаи асосии Java.  Қисми 2 - 4Барномаи зерини Java-ро баррасӣ кунед. Рамз хуб тартиб медиҳад, аммо ҳангоми иҷро кардани ArrayIndexOutOfBoundsException. Компилятор ба он имкон медиҳад, ки тартиб диҳад, зеро ArrayIndexOutOfBoundsExceptionон истиснои тафтишнашуда аст. Ҳолати умумӣ бо массив, ки метавонад:
class CheckedImageExample {
   public static void main(String[] args) {
       int[] array = new int[3];
       array[5] = 12;
   }
}
Натиҷа чунин хоҳад буд:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
  at main(CheckedImageExample.java:12)
Дар омади гап, оё шумо аллакай пай бурдед, ки дар Java касе номҳои кӯтоҳ намедиҳад? Чӣ қадаре ки калонтар бошад, ҳамон қадар беҳтар аст. Вай, Spring Framework, дар ин хеле муваффақ буд: танҳо як синфи BeanFactoryPostProcessor гиред )))

36. Кӯшиш бо захираҳо чист?

Ин механизмест, ки тавассути он тамоми захираҳо бояд дуруст баста шаванд. Ин як навъ равшан нест, дуруст?) Пеш аз ҳама, захира чист... Захираҳо an objectест, ки пас аз кор бо он шумо бояд онро пӯшед, яъне close(). Захираҳо ҳама an objectҳое мебошанд, ки интерфейсро амалӣ мекунанд AutoClosableва дар навбати худ интерфейсро амалӣ мекунанд Closeable. Барои мо фахмидан зарур аст, ки хама чиз захира InputStreamаст ва онро дуруст ва бомуваффакият баровардан лозим аст. OutpuStreamМаҳз барои ҳамин мо бояд try-with-resourceсохторро истифода барем. Ин аст он чӣ гуна аст:
private void unzipFile(File zipFile) throws IOException {
   try(ZipInputStream zipOutputStream = new ZipInputStream(new FileInputStream(zipFile))) {
       ZipEntry zipEntry = zipOutputStream.getNextEntry();
       while (zipEntry != null) {

       }
   }
}

private void saveZipEntry(ZipEntry zipEntry) {
   // логика сохранения
}
Дар ин мисол, манбаъ ZipInputStreamпас аз кор бо он шумо бояд онро пӯшед. Ва барои он ки дар бораи даъват кардани метод фикр накунем close(), мо танҳо ин тағирёбандаро дар блоки озмоиш муайян мекунем, тавре ки дар мисол нишон дода шудааст ва дар дохor ин блок мо ҳама кори заруриро мекунем. Мисол чӣ кор мекунад? Он архиви zip-ро мекушояд. Барои ин ба шумо лозим аст, ки InputStream'om. Шумо метавонед зиёда аз як тағирёбандаро муайян кунед; онҳо бо аломати вергул ҷудо карда мешаванд. Мушкилот дар чист? Аммо шумо метавонед finallyблокро истифода баред, шумо гуфта метавонед. Дар ин ҷо мақолае ҳаст , ки мушкилотро бо ин равиш муфассал шарҳ медиҳад. Он инчунин тамоми рӯйхати нокомиро тавсиф мекунад, ки метавонад ба касе дучор шавад, ки аз истифодаи ин тарҳ беэътиноӣ мекунад. Ман тавсия медиҳам, ки онро хонед;) Дар қисми ниҳоӣ саволҳо/ҷавобҳо дар мавзӯи Multithreading мавҷуданд. Профor ман GitHub
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION