JavaRush /Блоги Java /Random-TG /Java Core. Саволҳои мусоҳиба, қисми 2
Andrey
Сатҳи

Java Core. Саволҳои мусоҳиба, қисми 2

Дар гурӯҳ нашр шудааст
Барои онҳое, ки калимаи Java Core-ро бори аввал мешунаванд, инҳо асосҳои бунёдии забон мебошанд. Бо ин дониш, шумо метавонед бехатар барои таҷрибаомӯзӣ / таҷрибаомӯзӣ равед.
Java Core.  Саволҳо барои мусоҳиба, қисми 2 - 1
Ин саволҳо ба шумо кӯмак мекунанд, ки дониши худро пеш аз мусоҳиба такмил диҳед ё барои худ чизи навро омӯзед. Барои ба даст овардани малакаҳои амалӣ, дар JavaRush таҳсил кунед . Мақолаи аслӣ Истинодҳо ба қисмҳои дигар: Java Core. Саволҳои мусоҳиба, қисми 1 Java Core. Саволҳо барои мусоҳиба, қисми 3

Чаро аз усули finalize() бояд канорагирӣ кард?

Ҳамаи мо изҳоротро медонем, ки усулро finalize()коллектори партов пеш аз озод кардани хотираи ишғолкардаи an object даъват мекунад. Ин аст як барномаи намунавӣ, ки исбот мекунад, ки занги метод finalize()кафолат дода намешавад:
public class TryCatchFinallyTest implements Runnable {

	private void testMethod() throws InterruptedException
	{
		try
		{
			System.out.println("In try block");
			throw new NullPointerException();
		}
		catch(NullPointerException npe)
		{
			System.out.println("In catch block");
		}
		finally
		{
			System.out.println("In finally block");
		}
	}

	@Override
	protected void finalize() throws Throwable {
		System.out.println("In finalize block");
		super.finalize();
	}

	@Override
	public void run() {
		try {
			testMethod();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}
public class TestMain
{
	@SuppressWarnings("deprecation")
	public static void main(String[] args) {
	for(int i=1;i< =3;i++)
	{
		new Thread(new TryCatchFinallyTest()).start();
	}
	}
}
Натиҷа: Дар блоки try Block In catch In final block In try block In catch block In final block In try block In catch block In in last block Agaci, метод finalizeбарои ягон ришта иҷро нашудааст. Ин суханони маро исбот мекунад. Ман фикр мекунам, ки сабаб дар он аст, ки анҷомдиҳандагон аз ҷониби як риштаи ҷудокунандаи партов иҷро карда мешаванд. Агар мошини виртуалии Java хеле барвақт қатъ шавад, пас коллектори ахлот барои эҷод ва иҷро кардани ниҳоӣ вақти кофӣ надорад. Сабабҳои дигари истифода набурдани усул finalize()метавонанд инҳо бошанд:
  1. Ин усул finalize()бо занҷирҳо ба монанди конструкторҳо кор намекунад. Ин маънои онро дорад, ки вақте ки шумо конструктори синфро даъват мекунед, конструкторҳои суперсинф бечунучаро даъват карда мешаванд. Аммо дар сурати усули finalize(), ин пайравӣ нахоҳад кард. Усули суперкласс finalize()бояд ба таври возеҳ даъват карда шавад.
  2. Ҳама истисноҳое, ки бо усул партофта мешаванд, finalizeаз ҷониби риштаи коллектори партовҳо сарфи назар карда мешаванд ва минбаъд паҳн карда намешаванд, яъне ин ҳодиса дар гузоришҳои шумо сабт нахоҳад шуд. Ин хеле бад аст, ҳамин тавр не?
  3. finalize()Агар ин усул дар синфи шумо мавҷуд бошад, шумо инчунин ҷазои назаррас мегиред . Дар Барномасозии самаранок (нашри 2), Ҷошуа Блох гуфт:
    "Бале, ва як чизи дигар: ҳангоми истифодаи ниҳоӣ барои иҷроиш ҷазои калон вуҷуд дорад. Дар мошини ман вақти эҷод ва нест кардани an objectҳои оддӣ тақрибан 5,6 наносония аст.
    Илова кардани ниҳоӣ вақтро то 2400 наносония зиёд мекунад. Ба ибораи дигар, эҷод ва нест кардани an object бо ниҳоӣкунанда тақрибан 430 маротиба сусттар аст."

Чаро HashMap набояд дар муҳити бисёр ришта истифода шавад? Оё ин метавонад як ҳалқаи беохирро ба вуҷуд орад?

Мо медонем, ки HashMapин маҷмӯаи ҳамоҳангшудаест, ки ҳамтои ҳамоҳангшудаи он HashTable. Ҳамин тавр, вақте ки шумо ба маҷмӯа дастрасӣ пайдо мекунед ва дар муҳити чанд риштае, ки ҳама риштаҳо ба як мисоли коллексия дастрасӣ доранд, он гоҳ истифодаи он HashTableбо сабабҳои маълум, ба монанди канорагирӣ аз хондани ифлос ва таъмини мутобиқати маълумот бехатартар аст. Дар бадтарин ҳолат, ин муҳити бисёрсоҳавӣ боиси ҳалқаи беохир мегардад. Бале дуруст аст. HashMap.get()метавонад гардиши беохирро ба вуҷуд орад. Биёед бубинем, ки чӣ тавр? Агар шумо ба codeи сарчашмаи усул назар кунед HashMap.get(Object key), он чунин менамояд:
public Object get(Object key) {
    Object k = maskNull(key);
    int hash = hash(k);
    int i = indexFor(hash, table.length);
    Entry e = table[i];
    while (true) {
        if (e == null)
            return e;
        if (e.hash == hash && eq(k, e.key))
            return e.value;
        e = e.next;
    }
}
while(true)Ҳамеша метавонад қурбонии як ҳалқаи беохир дар муҳити бисёр ришта гардад, агар бо ягон сабаб e.nextон метавонад ба худ ишора кунад. Ин як ҳалқаи беохирро ба вуҷуд меорад, аммо чӣ гуна e.nextон ба худ (яъне ба e) ишора мекунад? Ин метавонад дар усуле рух диҳад void transfer(Entry[] newTable), ки ҳангоми HashMapтағир додани андозаи он даъват карда мешавад.
do {
    Entry next = e.next;
    int i = indexFor(e.hash, newCapacity);
    e.next = newTable[i];
    newTable[i] = e;
    e = next;
} while (e != null);
Ин порчаи code моил аст, ки ҳалқаи беохир эҷод кунад, агар андозаи тағирот дар як вақт рух диҳад, ки риштаи дигар кӯшиши тағир додани мисоли харитаро дорад ( HashMap). Ягона роҳи пешгирӣ аз ин сенария ин истифодаи ҳамоҳангсозӣ дар codeи худ ё беҳтараш истифодаи коллексияи ҳамоҳангшуда мебошад.

Абстраксия ва инкапсуляцияро шарҳ диҳед. Онҳо чӣ гуна алоқаманданд?

Бо ибораи оддӣ , " Абстраксия танҳо он хосиятҳои an objectро нишон медиҳад , ки барои намуди ҳозира аҳамият доранд . " Дар назарияи барномасозии ба an object нигаронидашуда, абстраксия қобorяти муайян кардани an objectҳоеро дар бар мегирад, ки "актерҳо" -и абстрактиро ифода мекунанд, ки метавонанд корҳоро иҷро кунанд, тағиротро дар ҳолати худ тағир диҳанд ва гузориш диҳанд ва бо дигар an objectҳои система "ҳамкорӣ" кунанд. Абстраксия дар ҳама гуна забони барномасозӣ аз бисёр ҷиҳат кор мекунад. Инро аз эҷоди реҷаҳо барои муайян кардани интерфейсҳо барои фармонҳои забони сатҳи паст дидан мумкин аст. Баъзе абстраксияҳо кӯшиш мекунанд, ки паҳнои муаррифии умумии ниёзҳои барномасозро бо роҳи комилан пинҳон кардани абстраксияҳое, ки дар онҳо сохта шудаанд, ба монанди намунаҳои тарҳрезӣ маҳдуд кунанд. Одатан, абстраксияро бо ду роҳ дидан мумкин аст: Абстраксияи додаҳо як роҳи эҷоди намудҳои мураккаби додаҳо ва фош кардани танҳо амалиёти пурмазмун барои ҳамкорӣ бо модели додаҳо мебошад ва ҳамзамон ҳама тафсилоти татбиқро аз ҷаҳони беруна пинҳон мекунад. Абстраксияи иҷро раванди муайян кардани ҳама изҳороти муҳим ва фош кардани онҳо ҳамчун як воҳиди корӣ мебошад. Мо одатан ин хусусиятро ҳангоми сохтани усул барои иҷрои баъзе корҳо истифода мебарем. Маҳдуд кардани маълумот ва усулҳо дар дохor синфҳо дар якҷоягӣ бо иҷрои пинҳонкунӣ (бо истифода аз назорати дастрасӣ) аксар вақт инкапсуляция номида мешавад. Дар натиҷа як намуди маълумот бо хусусиятҳо ва рафтор аст. Инкапсуляция аслан инчунин пинҳон кардани маълумот ва пинҳон кардани татбиқро дар бар мегирад. "Ҳар чизеро, ки тағир дода метавонад, фаро гиред" . Ин иқтибос як принсипи тарроҳии маъруф аст. Аз ин рӯ, дар ҳама гуна синф, тағйироти додаҳо метавонанд дар вақти кор ба амал оянд ва тағирот дар versionҳои оянда метавонанд ба амал оянд. Ҳамин тариқ, инкапсуляция ҳам ба маълумот ва ҳам ба татбиқ дахл дорад. Пас, онҳо метавонанд ба таври зерин пайваст шаванд:
  • Абстраксия асосан он чизест, ки синф метавонад коре кунад [Идея]
  • Инкапсуляция бештар аст Чӣ тавр ба ин функсия ноил шудан мумкин аст [Иҷрокунӣ]

Фарқи байни интерфейс ва синфи абстрактӣ?

Тафовутҳои асосиро метавон ба таври зерин номбар кард:
  • Интерфейс ягон усулро амалӣ карда наметавонад, аммо синфи абстрактӣ метавонад.
  • Синф метавонад интерфейсҳои зиёдеро амалӣ кунад, аммо метавонад танҳо як суперкласс дошта бошад (абстрактӣ ё абстрактӣ)
  • Интерфейс қисми иерархияи синф нест. Синфҳои ба ҳам алоқаманд метавонанд ҳамон интерфейсро амалӣ кунанд.
Он чизе, ки шумо бояд дар хотир доред, ин аст: "Вақте ки шумо метавонед консепсияро бо истилоҳи "он чӣ кор мекунад" комилан тавсиф кунед, бидуни муайян кардани "он чӣ кор мекунад", пас шумо бояд интерфейсро истифода баред. Агар шумо бояд баъзе тафсилоти татбиқро дохил кунед, пас шумо бояд консепсияи худро дар синфи абстрактӣ муаррифӣ кунед." Инчунин, ба таври дигар гӯем: Оё синфҳои зиёде мавҷуданд, ки онҳоро бо як исм "як гурӯҳ гурӯҳбандӣ кардан" ва тавсиф кардан мумкин аст? Агар ин тавр бошад, бо номи ин исм синфи абстрактӣ эҷод кунед ва аз он синфҳоро мерос гиред. Масалан, Catва Dogметавонад аз синфи абстрактӣ мерос бигирад Animalва ин синфи абстрактии абстрактӣ усули void Breathe()нафаскаширо амалӣ хоҳад кард, ки ҳамаи ҳайвонҳо ҳамин тавр иҷро мекунанд. Кадом феълҳоро ба синфи ман истифода бурдан мумкин аст ва ба дигарон низ татбиқ карда мешавад? Барои ҳар яке аз ин феълҳо интерфейс эҷод кунед. Масалан, ҳама ҳайвонот метавонанд бихӯранд, бинобар ин ман интерфейс эҷод мекунам IFeedableва онро Animalин интерфейсро амалӣ мегардонам. Танҳо барои татбиқи интерфейс кофӣ хуб аст Dog( қодир аст, ки ба ман маъқул шавад), аммо на ҳама. Касе гуфт: фарқияти асосӣ дар он аст, ки шумо татбиқи худро дар куҷо мехоҳед. Вақте ки шумо интерфейс эҷод мекунед, шумо метавонед татбиқро ба ҳама синфе, ки интерфейси шуморо амалӣ мекунад, интиқол диҳед. Бо эҷод кардани синфи абстрактӣ, шумо метавонед татбиқи ҳама синфҳои ҳосилшударо дар як ҷо мубодила кунед ва аз бисёр чизҳои бад, ба монанди такрори code пешгирӣ кунед. HorseILikeable

Чӣ тавр StringBuffer хотираро сарфа мекунад?

Синф Stringҳамчун an objectи тағирнопазир амалӣ карда мешавад, ки маънои онро дорад, ки вақте шумо дар аввал қарор медиҳед, ки чизе ба an object гузоред String, мошини виртуалӣ массиви собитро маҳз ба андозаи арзиши аслии шумо ҷудо мекунад. Он гоҳ ин ҳамчун доимӣ дар дохor мошини виртуалӣ баррасӣ карда мешавад, ки агар арзиши сатр тағир наёбад, беҳбудии назаррасро таъмин мекунад. Аммо, агар шумо қарор диҳед, ки мундариҷаи сатрро бо ягон роҳ тағир диҳед, мошини виртуалӣ воқеан ин аст, ки мундариҷаи сатри аслиро ба фазои муваққатӣ нусхабардорӣ кунед, тағиротҳои худро ворид кунед ва он тағиротро ба массиви нави хотира захира кунед. Ҳамин тариқ, ворид кардани тағирот ба арзиши сатр пас аз оғозёбӣ як амалиёти гаронарзиш аст. StringBuffer, аз тарафи дигар, ҳамчун массиви ба таври динамикӣ васеъшаванда дар дохor мошини виртуалӣ амалӣ карда мешавад, ки ин маънои онро дорад, ки ҳама гуна амалиёти тағирдиҳӣ дар ҳуҷайраи хотираи мавҷуда рух дода метавонад ва хотираи нав ҳангоми зарурат ҷудо карда мешавад. Аммо, барои мошини маҷозӣ роҳи оптимизатсия вуҷуд надорад, StringBufferзеро мундариҷаи он дар ҳар як мисол номувофиқ ҳисобида мешавад.

Чаро усулҳои интизорӣ ва огоҳӣ дар синфи Object ба ҷои Thread эълон карда шудаанд?

Усулҳои wait, notify, notifyAllтанҳо вақте лозиманд, ки шумо мехоҳед, ки риштаҳои шумо ба захираҳои муштарак дастрасӣ дошта бошанд ва манбаи муштарак метавонад ҳама гуна an objectи java дар теппа бошад. Ҳамин тариқ, ин усулҳо дар синфи асосӣ муайян карда мешаванд Object, то ки ҳар як an object дорои назоратест, ки имкон медиҳад риштаҳо дар мониторашон интизор шаванд. Java ягон an objectи махсусе надорад, ки барои мубодилаи манбаи муштарак истифода мешавад. Чунин сохтори маълумот муайян карда нашудааст. Аз ин рӯ, масъулияти синф аст Object, ки тавонист ба манбаи муштарак табдил ёбад ва усулҳои ёрирасон ба монанди wait(), notify(), notifyAll(). Java ба идеяи Чарлз Ҳоар дар бораи мониторҳо асос ёфтааст. Дар Java, ҳама an objectҳо монитор доранд. Риштаҳо дар мониторҳо интизор мешаванд, бинобар ин барои анҷом додани интизорӣ ба мо ду параметр лозим аст:
  • ришта
  • монитор (ҳар an object).
Дар тарҳрезии Java, риштаро дақиқ муайян кардан мумкин нест; он ҳамеша риштаи ҷорӣ аст, ки codeро иҷро мекунад. Аммо, мо метавонем мониторро муайян кунем (ки an objectест, ки мо метавонем методро даъват кунем wait). Ин як тарҳи хуб аст, зеро агар мо метавонем ягон риштаи дигарро маҷбур кунем, ки дар монитори мушаххас интизор шавем, он ба "ҳуҷуми" оварда мерасонад ва тарҳрезӣ/барномасозии барномаҳои параллелиро мушкил мекунад. Дар хотир доред, ки дар Java ҳама амалҳое, ки ба риштаҳои дигар халал мерасонанд, бекор карда мешаванд (масалан, stop()).

Барномаеро барои эҷоди бунбаст дар Java нависед ва онро ислоҳ кунед

Дар Java deadlock, ин ҳолатест, ки ҳадди аққал ду ришта блокро дар захираҳои гуногун нигоҳ медоранд ва ҳарду мунтазиранд, ки манбаи дигар барои иҷрои вазифаашон дастрас шавад. Ва ҳеҷ яке аз онҳо қодир нест, ки дар захираи нигоҳдорӣ қулф гузорад. Java Core.  Саволҳо барои мусоҳиба, қисми 2 - 2 Намунаи барнома:
package thread;

public class ResolveDeadLockTest {

	public static void main(String[] args) {
		ResolveDeadLockTest test = new ResolveDeadLockTest();

		final A a = test.new A();
		final B b = test.new B();

		// Thread-1
		Runnable block1 = new Runnable() {
			public void run() {
				synchronized (a) {
					try {
					// Добавляем задержку, чтобы обе нити могли начать попытки
					// блокирования ресурсов
						Thread.sleep(100);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					// Thread-1 заняла A но также нуждается в B
					synchronized (b) {
						System.out.println("In block 1");
					}
				}
			}
		};

		// Thread-2
		Runnable block2 = new Runnable() {
			public void run() {
				synchronized (b) {
					// Thread-2 заняла B но также нуждается в A
					synchronized (a) {
						System.out.println("In block 2");
					}
				}
			}
		};

		new Thread(block1).start();
		new Thread(block2).start();
	}

	// Resource A
	private class A {
		private int i = 10;

		public int getI() {
			return i;
		}

		public void setI(int i) {
			this.i = i;
		}
	}

	// Resource B
	private class B {
		private int i = 20;

		public int getI() {
			return i;
		}

		public void setI(int i) {
			this.i = i;
		}
	}
}
Иҷрои codeи дар боло зикршуда бо сабабҳои хеле маълум ба бунбаст оварда мерасонад (дар боло шарҳ дода шудааст). Акнун мо бояд ин масъаларо ҳал кунем. Ман боварӣ дорам, ки роҳи ҳалли ҳама гуна мушкилот дар решаи худи мушкилот аст. Дар ҳолати мо, модели дастрасӣ ба A ва B мушкилоти асосӣ аст. Аз ин рӯ, барои ҳалли он, мо танҳо тартиби операторони дастрасиро ба захираҳои муштарак иваз мекунем. Пас аз тағир додани он чунин хоҳад буд:
// Thread-1
Runnable block1 = new Runnable() {
	public void run() {
		synchronized (b) {
			try {
				// Добавляем задержку, чтобы обе нити могли начать попытки
				// блокирования ресурсов
				Thread.sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			// Thread-1 заняла B но также нуждается в А
			synchronized (a) {
				System.out.println("In block 1");
			}
		}
	}
};

// Thread-2
Runnable block2 = new Runnable() {
	public void run() {
		synchronized (b) {
			// Thread-2 заняла B но также нуждается в А
			synchronized (a) {
				System.out.println("In block 2");
			}
		}
	}
};
Ин синфро дубора иҷро кунед ва ҳоло шумо бунбастро намебинед. Ман умедворам, ки ин ба шумо кӯмак мекунад, ки аз бунбастҳо канорагирӣ кунед ва агар шумо бо онҳо дучор шавед, аз онҳо халос шавед.

Чӣ мешавад, агар синфи шумо, ки интерфейси Serializable-ро амалӣ мекунад, дорои ҷузъҳои сериализатсиянашаванда бошад? Инро чӣ тавр бояд ислоҳ кард?

Дар ин ҳолат, он ҳангоми иҷроиш партофта мешавад NotSerializableException. Барои ислоҳи ин мушкилот, роҳи ҳалли хеле содда вуҷуд дорад - ин қуттиҳоро тафтиш кунед transient. Ин маънои онро дорад, ки майдонҳои тафтишшуда силсилавӣ карда намешаванд. Агар шумо инчунин хоҳед, ки ҳолати ин майдонҳоро нигоҳ доред, пас шумо бояд тағирёбандаҳои истинодро баррасӣ кунед, ки аллакай Serializable. Шумо инчунин метавонед усулҳои readResolve()варо истифода баред writeResolve(). Биёед ҷамъбаст кунем:
  • Аввалан, майдони худро ғайридавлатӣ гардонед transient.
  • Аввалан writeObject, defaultWriteObjectба ришта занг занед, то ҳамаи transientмайдонҳои ғайридавлатиро захира кунед, пас усулҳои боқимондаро даъват кунед, то хосиятҳои инфиродии an objectи сериализатсиянашавандаи шуморо сериализатсия кунанд.
  • Дар readObject, аввал defaultReadObjectба ҷараён занг занед, то ҳамаи transientмайдонҳои ғайрифаъолро бихонед, пас усулҳои дигарро (мувофиқ ба онҳое, ки шумо дар writeObject) илова кардаед, даъват кунед, то an objectи ғайридавлатии худро сериализатсия кунед transient.

Калидвожаҳои муваққатӣ ва тағйирёбандаро дар Java шарҳ диҳед

"Калимаи калидӣ transientбарои нишон додани майдонҳое истифода мешавад, ки силсилавӣ карда намешаванд." Мувофиқи Мушаххасоти забони Java: Тағирёбандаҳоро метавон бо нишондиҳандаи муваққатӣ қайд кард, то нишон диҳад, ки онҳо қисми ҳолати доимии an object нестанд. Масалан, шумо метавонед майдонҳоеро, ки аз дигар соҳаҳо гирифта шудаанд, дошта бошед ва беҳтар аст, ки онҳоро ба таври барномавӣ ба даст оред, на барқарор кардани ҳолати онҳо тавассути силсиласозӣ. Масалан, дар синф, BankPayment.javaмайдонҳо ба монанди principal(директор) ва rate(ставка) метавонанд сериализатсия шаванд ва interest(фоизҳои ҳисобшуда) метавонанд дар вақти дилхоҳ, ҳатто пас аз бекоркунӣ ҳисоб карда шаванд. Агар дар хотир дошта бошем, ҳар як ришта дар Java хотираи маҳаллии худро дорад ва дар ин хотираи маҳаллӣ амалиёти хондан/навиштанро иҷро мекунад. Вақте ки ҳама амалҳо иҷро мешаванд, он ҳолати тағирёфтаи тағирёбандаро ба хотираи муштарак менависад, ки аз он ҷо ҳамаи риштаҳо ба тағирёбанда дастрасӣ пайдо мекунанд. Одатан, ин як риштаи муқаррарӣ дар дохor мошини виртуалӣ аст. Аммо тағирдиҳандаи идоранашаванда ба мошини виртуалӣ мегӯяд, ки дастрасии ришта ба он тағирёбанда ҳамеша бояд нусхаи худи он тағирёбанда бо нусхаи асосии тағирёбанда дар хотира мувофиқат кунад. Ин маънои онро дорад, ки ҳар дафъае, ки ришта мехоҳад ҳолати тағирёбандаро хонад, вай бояд ҳолати хотираи дохorро тоза кунад ва тағирёбандаро аз хотираи асосӣ навсозӣ кунад. Volatileмуфидтарин дар алгоритмҳои бе қулф. Шумо тағирёбандаеро, ки маълумоти муштаракро ҳамчун ноустувор нигоҳ медоред, қайд мекунед, пас шумо барои дастрасӣ ба ин тағирёбанда қулфҳоро истифода намебаред ва ҳамаи тағиротҳои аз як ришта воридшуда ба дигарон намоён хоҳанд шуд. Ё агар шумо хоҳед, ки муносибати "баъд аз он рӯй дод" эҷод кунед, то ки ҳисобҳо такрор нашаванд, боз боварӣ ҳосил кунед, ки тағиротҳо дар вақти воқеӣ намоён мешаванд. Ноустувор бояд барои бехатар интишори an objectҳои тағирнашаванда дар муҳити чанд ришта истифода шавад. Эъломияи майдон public volatile ImmutableObjectкафолат медиҳад, ки ҳама риштаҳо ҳамеша истинодҳои мавҷуда ба инстансияро мебинанд.

Фарқи байни Iterator ва ListIterator?

Мо метавонем , ё Iteratorбарои такрори элементҳо истифода барем . Аммо он метавонад танҳо барои такрори элементҳо истифода шавад . Тафовутҳои дигар дар зер тавсиф карда мешаванд. Ту метавонӣ: SetListMapListIteratorList
  1. бо тартиби баръакс такрор кунед.
  2. дар ҳама ҷо индексатсия гиред.
  3. дилхоҳ арзишро дар ҳама ҷо илова кунед.
  4. ягон арзишро дар мавқеи ҷорӣ муқаррар кунед.
Муваффақият дар таҳсилатон!! Муаллифи мақола Локеш Гупта мақолаи аслӣ Java Core. Саволҳои мусоҳиба, қисми 1 Java Core. Саволҳо барои мусоҳиба, қисми 3
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION