Java - Situace v paměti

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Zamčeno
Matiseli
Level 2.5
Level 2.5
Příspěvky: 381
Registrován: 24 čer 2014 19:30
Bydliště: Podíváte-li se roku 2023 na oblohu, tak na té planetě více v pravo

Java - Situace v paměti

Příspěvek od Matiseli »

Zdravím,
zajímala by mě situace, jež u příkladu následujícího nastane v RAM:
Mám řídící třídu (tj. Objekt s metodou "main" starající se o komunikaci s uživatelem apod.), v níž instancuji objekt Člověk. Jeho konstruktor inicializuje jisté atributy (řekněme, "výška = 152" atd.). Avšak, v samotném objektu se nachází privátní metody, které sami konstruktor zavolají (tedy ve třídě Člověk jistá metodá má v těle sekvenci kódů jako "new Člověk(152, 52)").

Nyní k otázkám:
1. Při změně parametrů v konstruktoru Člověka, jenž volán jest ve třídě stejné, přizpůsobí se jim i konstruktor vnější - čili volaný z hlavní/řídící třídy?
2. Je tento způsob změny parametrů v souladu s filozofií nenáročnosti aplikace?

Děkuji za toužené odpovědi.
Uživatelský avatar
domitea
Tvůrce článků
Příspěvky: 1971
Registrován: 24 čer 2009 19:46
Bydliště: Královehradecký kraj
Kontaktovat uživatele:

Re: Java - Situace v paměti

Příspěvek od domitea »

A zdroják by nebyl? Asi vím co myslíš, ale ze zdrojáku se to lépe čte :wink:

1. Při volání konstruktoru vždycky vyváříš nový objekt, vždycky. Takže jak by se mu měl přispůsobit?

2. Jestli parametry třídy člověk měníš tak, že vždycky vytvoříš nový objekt... No, určitá paměťová náročnost tam bude :D
Matiseli
Level 2.5
Level 2.5
Příspěvky: 381
Registrován: 24 čer 2014 19:30
Bydliště: Podíváte-li se roku 2023 na oblohu, tak na té planetě více v pravo

Re: Java - Situace v paměti

Příspěvek od Matiseli »

Tedy, zde konstruktor jest:

Kód: Vybrat vše

	/**Konstruktor instancuje potřebné objekty pro zápis/čtení.
	 * @cestaKsouboru - Udává soubor v adresáři, na něhož se veškeré poskytované operace v tomto objektu zaměří.*/
	public SoubSys(String cestaKsouboru) throws IOException{
		operátor = new RandomAccessFile(new File(cestaKsouboru), "rw");
	}
A mám, dejme tomu, tuto metodu:

Kód: Vybrat vše

private Soubory zmenZamereni(String cestaKsouboru){

return new Soubory(cestaKsouboru);
}
Nyní k otázce: Jest méně náročné volat celý konstruktor, (viz. metoda "zmenZamereni()"), či k těmto účelům napsat metodu novou (avšak s obsahem, jako má konstruktor) - tedy:

Kód: Vybrat vše

private void zmenZamereni(String cestaKsouboru){
operace = new RandomAccessFile(new File(cestaKsouboru));
}
Uživatelský avatar
domitea
Tvůrce článků
Příspěvky: 1971
Registrován: 24 čer 2009 19:46
Bydliště: Královehradecký kraj
Kontaktovat uživatele:

Re: Java - Situace v paměti

Příspěvek od domitea »

Jo táákhle, no odpověděl jsis sám :wink:

Jaký je rozdíl mezi metodou Soubory a RandomAccessFile? Žádný, oba dva to jsou konstruktory! Takže v tomhle případě to je fuk :lol: Stejně si vyvoříš další objekt, přepíšeš reference a až uklízeč odpadků bude mít čas, tak ten starý objekt vymaže. To platí u obou dvou kostruktorů.

Jinak zrovna u Javy řešit otázku přidělování paměti mi přijde trochu kontraproduktivní :D
Zamčeno
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Deska a paměti pro 9900X
    od Hromotluk » » v Rady s výběrem hw a sestavením PC
    8 Odpovědi
    6600 Zobrazení
    Poslední příspěvek od Hromotluk

Zpět na „Programování a tvorba webu“