Stránka 1 z 1

Java - Situace v paměti

Napsal: 10 led 2015 18:34
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.

Re: Java - Situace v paměti

Napsal: 10 led 2015 19:03
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

Re: Java - Situace v paměti

Napsal: 11 led 2015 12:16
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));

}

Re: Java - Situace v paměti  Vyřešeno

Napsal: 11 led 2015 14:34
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