»RSS Benchmark sajt

      Prikazani rezultati od 1 do 5 od ukupno 5

      Tema: Java "this" pitanje

      1. #1
        Member Avatar korisnika Vegeta
        Na forumu od
        Oct 2011
        Poruka
        772
      2. Moja mašina
        • CPU: i5-2400
        • MoBo: Dell
        • RAM: DDR3 8GB
        • VGA: iGPU
        • MON: Dell P2717H
        • HDD: SSD120GB/HDD500GB
        • OPT: CD/DVD-RW
        • Case: Dell Optiplex 790
        • OS: WIN10
        • LAP: HP ProoBook 4530s
        • INET: DSL
      3. Java "this" pitanje

        Imam jedno pitanje u vezi "this", sređujem neki kod pa imam jednu nedoumicu. Naime, klasa počinje ovako
        Kod:
        public class AWS
        {
        
        private float[]     RR18_00, RR00_06, RR18_06, RR06_12, RR12_18, RR06_18;
        private float[][][] fs;
        private int[][][]   ds;
        private int         nStation;
        private String[][]  stationString;
        
          public AWS(int nStation, String[][] stationString, String terminString)
          {
        
            this.nStation = nStation;
            this.stationString = stationString;
        
            int[] indicativeStation = new int[nStation];
            RR18_00 = new float[nStation];
            RR00_06 = new float[nStation];
            RR18_06 = new float[nStation];
            RR06_12 = new float[nStation];
            RR12_18 = new float[nStation];
            RR06_18 = new float[nStation];
            fs = new float[nStation][24][6];
            ds = new int[nStation][24][6];
        
            for(int i = 0; i < nStation; i++)
            {
              
              indicativeStation[i] = new Integer(stationString[i][0]);
              RR18_00[i] = -999;
              RR00_06[i] = -999;
              RR18_06[i] = -999;
              RR06_12[i] = -999;
              RR12_18[i] = -999;
              RR06_18[i] = -999;
        gde se u preostalom delu koda vrši spajanje sa databazom i preuzimanje podataka za padavine (RR18_00, RR00_06 ........), brzinu i pravac vetra (fs,ds). nStation i stationString predstavljaju redni broj i ime stanice. Zanima me sledeće, zašto je "this" reč korišćena za definisanje:

        Kod:
        this.nStation = nStation;
        this.stationString = stationString;
        a nije korišćena za RR18_00, RR00_06........ ?

        Drugo pitanje, zašto je dotični uvek dodeljivao, popunjavao nizove sa vrednošću -999, pre nego oni poprime odgovarajuće vrednosti iz databaze ? Zašto jednostavno nije ostavio da u nizu ostane "default" vrednost 0.0, pre nego što ih popunim sa podacima iz databaze ? Da li to ima neke veze sa Javom, da li se to tako uvek radi?
        Menjao Vegeta : 26.07.2019. u 10:33

      4. #2
        Member Avatar korisnika ivanbass1
        Na forumu od
        Apr 2016
        Lokacija
        Nis
        Poruka
        7.753
      5. Moja mašina
        • CPU: Ryzen 5 2600@4.0GHz, LC-CC-120 Push/Pull
        • MoBo: Msi X370 Krait Gaming
        • RAM: G.Skill Aegis 2x8GB 3000MHz CL16
        • VGA: 5700 XT MSI Gaming X
        • MON: AOC Q3279VWFD8
        • HDD: Patriot Ignite 240GB, WD Blue 500GB, Toshiba P300 3TB
        • OPT: Izbaceno zbog beskorisnosti
        • Case: NZXT S340 Elite 2x Arctic P14, 1x Arctic F12, Antec VP700P
        • SND: Microlab Solo 6C, Hyperx Cloud II
        • OS: Windows 10 64bit
        • LAP: Asus Vivobook Pro (i7 8750H, 2x8GB, GTX 1050 4GB, 1080p IPS)
        • Ostalo: Redragon Usas K553+Logitech g400s, Sandberg XXXL
      6. U konstruktoru se prosledjene vrednosti zovu isto kao vrednosti atributa, zato mora da napise"this.", jer je u tom slucaju "nStation" parametar funkcije, a "this.nStation" je privatni atribut klase.

        Te brojeve inicijalizuje na -999 zbog svojih nekih razloga, verovatno proverava da li je manje od nule ili da li je to jednako -999 da bi znao da vrednost nije menjana od pocetka.

      7. #3
        Member Avatar korisnika Vegeta
        Na forumu od
        Oct 2011
        Poruka
        772
      8. Moja mašina
        • CPU: i5-2400
        • MoBo: Dell
        • RAM: DDR3 8GB
        • VGA: iGPU
        • MON: Dell P2717H
        • HDD: SSD120GB/HDD500GB
        • OPT: CD/DVD-RW
        • Case: Dell Optiplex 790
        • OS: WIN10
        • LAP: HP ProoBook 4530s
        • INET: DSL
      9. Hvala na brzom odgovoru. Vezano za vrednost -999 mi je sada malo jasnije, jer treba razlikovati kada imam padavine sa vrednošću 0.0mm(NEMA PADAVINA) izmerene za datu stanicu i kada nemamo podatak (NaN). Ako bi ostala "default" vrednost 0.0 ispalo bi da nije bilo padavina, a možda nemam podatak za datu stanicu usled nekog prekida/kvara.

        Citat Citiram korisnika: ivanbass1 Pogledaj poruku
        U konstruktoru se prosledjene vrednosti zovu isto kao vrednosti atributa, zato mora da napise"this.", jer je u tom slucaju "nStation" parametar funkcije, a "this.nStation" je privatni atribut klase.
        I šta se onda sa time dobija ?
        Menjao Vegeta : 26.07.2019. u 11:22

      10. #4
        Member Avatar korisnika ivanbass1
        Na forumu od
        Apr 2016
        Lokacija
        Nis
        Poruka
        7.753
      11. Moja mašina
        • CPU: Ryzen 5 2600@4.0GHz, LC-CC-120 Push/Pull
        • MoBo: Msi X370 Krait Gaming
        • RAM: G.Skill Aegis 2x8GB 3000MHz CL16
        • VGA: 5700 XT MSI Gaming X
        • MON: AOC Q3279VWFD8
        • HDD: Patriot Ignite 240GB, WD Blue 500GB, Toshiba P300 3TB
        • OPT: Izbaceno zbog beskorisnosti
        • Case: NZXT S340 Elite 2x Arctic P14, 1x Arctic F12, Antec VP700P
        • SND: Microlab Solo 6C, Hyperx Cloud II
        • OS: Windows 10 64bit
        • LAP: Asus Vivobook Pro (i7 8750H, 2x8GB, GTX 1050 4GB, 1080p IPS)
        • Ostalo: Redragon Usas K553+Logitech g400s, Sandberg XXXL
      12. Dobija se da privatni atribut klase dobija vrednost prosledjenog parametra funkcije.

        U principu mozes promeniti naziv parametra i onda je to "this" viska, na isto dodje, ali bi trebalo da razumes kako funkcionise.

      13. #5
        Member
        Na forumu od
        Aug 2003
        Poruka
        9.710
        U prevodu, ako argument metode i polje klase imaju isto ime, i napišeš to ime bez ikakvih drugih odrednica, Java kompajler smatra da je argument metode "prioritetniji" i da misliš na njega. "this.ime" eksplicitno govori kompajleru "polje ime iz ove instance klase".

        U C++-u postoji konvencija da se imenima polja klase daje prefiks m_ (skraćeno od "member") kako bi se u kodu lakše prepoznavalo šta su polja klase a šta obične promenljive ili argumenti metoda. Mada, s obzirom da svaki normalan IDE obavlja bojenje promenljivih na osnovu njihove prirode, pa se po boji vidi šta je polje a šta nije, ovo je dosta izgubilo na snazi.

      Bookmarks

      Dozvoljeni tagovi

      • Ne možete pokrenuti nove teme
      • Ne možete odgovoriti u temi
      • Ne možete okačiti atačmente
      • Ne možete izmeniti svoje poruke
      •