• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jakie zadanie ma konstruktor i słowo 'return'

Object Storage Arubacloud
0 głosów
911 wizyt
pytanie zadane 21 października 2017 w Java przez Kubs Mądrala (5,190 p.)

Witajcie,

zastanawiam się jakie zadanie ma konstruktor? Przekazuje on dane do konstruktora bazowego czy...?

Przykład

public class FragmentPagerAdapter extends FragmentStatePagerAdapter {

        private ArrayList<String> itemData;
        Fragment fragment;
        int resId;



        public FragmentPagerAdapter(FragmentManager fm, ArrayList<String> itemData) {
            super(fm);
            this.itemData = itemData;

        }

 

oraz jakie jest zastosowanie 'return'? Gdzie są zwracane te dane w każdej metodzie gdzie pojawia się 'return'?

Przykład

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        Log.i("x","onCreateViewFragment");

        View view = inflater.inflate(R.layout.fragment1, container, false);
        textView = (TextView) view.findViewById(R.id.textView);
        ImageView imageResId = (ImageView) view.findViewById(image);
        imageResId.setImageResource(imagesResId);

        return view;
    }

 

 

2 odpowiedzi

+1 głos
odpowiedź 21 października 2017 przez adas94 Nałogowiec (29,200 p.)
wybrane 22 października 2017 przez Kubs
 
Najlepsza

Gdzie są zwracane te dane w każdej metodzie gdzie pojawia się 'return'?

W miejsce gdzie ta metoda jest wywoływana. 

zastanawiam się jakie zadanie ma konstruktor?

Konstruktor to takie coś co jest wywoływane podczas tworzenia nowego obiektu za pomocą 'new'. Jego zadaniem jest m in. zainicjalizowanie danymi w odpowiedni sposób pól obiektu.  

 

komentarz 21 października 2017 przez Kubs Mądrala (5,190 p.)
Witaj,

dziękuje serdecznie.

Czyli w tym przypadku ten konstruktor przekazuje dane do ArrayList<String> czyli po prostu stawia znak równości pomiędzy zmienna a słowem 'new'?

 

I odnośnie 'return' (tylko proszę nie śmiej się) :)

Tzn. w które dokładnie miejsce w tym przypadku?
komentarz 21 października 2017 przez adas94 Nałogowiec (29,200 p.)

Konstruktor bierze sobie tę ArrayList<String> z parametru i ustawia ją do swojego pola. Czyli inaczej FragmentPagerAdapter posiada pole które jest ArrayListą -> a w konstruktorze następuje przypisanie wartości do tego pola (za pomocą wartości przekazanej w parametrze)

 

Co do drugiego pytania to onCreateView jest wywoływane w cyklu życia Fragmentu. 

I dzieje się to niejako samoistnie w tle, także gdzie konkretnie w implementacji jest używana ta metoda jest mało ważne. 

 

komentarz 21 października 2017 przez Kubs Mądrala (5,190 p.)

Rozumiem..

A w tym przypadku w które miejsca zwraca 'return'?

private boolean checkAnswers() {
        for (boolean radioAnswer : answer) {
            if (!radioAnswer) {
                return false;
            }
        }
        return true;
    }

 

1
komentarz 21 października 2017 przez adas94 Nałogowiec (29,200 p.)
W miejsce w którym używasz tej metody. Np możesz gdzieś w kodzie napisać

if (checkAnswers()) {

coś

}

i ta metoda checkAnswers będzie albo true albo false -> w zależności od tego co jest w niej tam zainplementowane. Możesz sobie to wyobrazić w ten sposób, że nazwa używanej metody (checkAnserws() ) w kodzie jest zamieniana na to co zwraca. (konkretną wartość)
komentarz 22 października 2017 przez Kubs Mądrala (5,190 p.)
adas, a moglbys jeszcze  'zamienić' ten kod checkAnswer na slowa?  Rozumiem, ze sprawdza on kolejno dane w tablicy answer i przypisuje je kolejno w radioAnswer. Ale co dalej?
1
komentarz 22 października 2017 przez adas94 Nałogowiec (29,200 p.)
private boolean checkAnswers() {
        for (boolean radioAnswer : answer) {
            if (!radioAnswer) {
                return false;
            }
        }
        return true;
    }

Wyobraź sobie, że zmienna 'answer' to tablica bądź lista i zawiera [true,true,true,false,true]. 

W forze lecisz po kolei przez tą tablicę, a więc najpierw radioAnswer=true -> potem sprawdzasz ifem, czy radioAnswer=false (to nie prawda bo jest true, więc idziesz na początek pętli), bierzesz drugi element tablicy (true - czyli to samo), trzeci element (true czyli to samo) bierzesz czwarty element (false) -> sprawdzasz ifem czy radioAnswer=false (tak jest false) -> więc wchodzisz do środka ifa a tam jest return false (a więc zwracasz false i metoda się kończy). 

Możesz się zastanawiać po co w takim razie jest ten drugi return, skoro wszystko rozgrywa się w pętli. Otóż po to, że gdyby w tablicy były tylko true, to pętla się skończy i przejdzie do tego returna. 

komentarz 23 października 2017 przez Kubs Mądrala (5,190 p.)
Super. Dopytam tylko jeszcze o to co dzieje się dalej - return powiedzmy zwraca wszystkie true. Wtedy, jak wspomniałeś, można powiedzieć że niejako  checkAnswers zamieniana jest na wartość true. Ale czy te wszystkie wartości zwracane true są kolejno zapisywane w checkAnswers w postaci true,true,true.... Czy jako JEDNA wartość true?

Czy ta metoda zwraca po prostu ALBO true ALBO false i nie ma innej możliwości?  Czyli w przypadku np. true,true,false,false.. ta metoda po prostu będzie niemożliwa do wykonania?

Dziękuje adas.
komentarz 23 października 2017 przez adas94 Nałogowiec (29,200 p.)
Tak jak Ci napisałem, pętla będzie działać dopóki nie napotka false, jeżeli napotka false wejdzie do ifa i zwróci JEDNO false, natomiast jeżeli w tablicy będą same true, to pętla się zakończy bez wejścia w ifa i zwróci true tym drugim returnem (też tylko JEDNO true)

Nie ma za co ;)
komentarz 25 października 2017 przez Kubs Mądrala (5,190 p.)
Super. Raz jeszcze dziękuje :) Jak dobrze że jesteś :)
+1 głos
odpowiedź 21 października 2017 przez MartinPLPL Początkujący (310 p.)

A propo returna, dajmy że masz methodę dodaj: 

public static int dodaj(int a, int b) {
int wynik;
wynik = a + b;
return wynik;
}

Jeżeli gdzieś w konsoli będziesz chciał wyświetlić dodawanie np. 5 + 3, i wpiszesz w  kodzie dodaj(5, 3) to wtedy wyświetli Ci 8. return - zwraca jakąś wartość.

komentarz 21 października 2017 przez Kubs Mądrala (5,190 p.)
Czyli 'return wynik' zwraca do:

a) wynik = (druga linijka)

czy

b) int wynik;
komentarz 21 października 2017 przez adas94 Nałogowiec (29,200 p.)
Zwraca int wynik, który ma wartość a+b, które są w parametrze.
komentarz 21 października 2017 przez adas94 Nałogowiec (29,200 p.)

Jeżeli gdzieś w konsoli będziesz chciał wyświetlić dodawanie np. 5 + 3, i wpiszesz w  kodzie dodaj(5, 3) to wtedy wyświetli Ci 8. return - zwraca jakąś wartość.

Wprowadzasz kolegę w błąd. Nic sie w konsoli wtedy nie wyświetli jeżeli wpisze tylko dodaj(5,3). Po prostu wartość wtedy zostanie zwrócona "w powietrze". Aby się coś wyświetliło musisz wpisać System.out.println(dodaj(5,3)) lub możesz przypisać zwracaną wartość do zmiennej int zmienna = dodaj(5,3);

komentarz 21 października 2017 przez Kubs Mądrala (5,190 p.)
Czyli 'return' w tym przypadku przypisuje wartość końcową dodawania do zmiennej. Czyli na początku wykonywania tej metody ta zmienna była pusta a ostatnia wykonywana linijka tej metody przypisała do zmiennej wartość, czy tak? :)
komentarz 21 października 2017 przez adas94 Nałogowiec (29,200 p.)
int wynik - zmienna bez określonej wartości

wynik = a+b - przypisanie wartości zmiennej wynik (przy a = 5 i b = 3 wynik =8)

return wynik - zwrócenie wartości wynik (8 w tym przykładzie)
komentarz 21 października 2017 przez Kubs Mądrala (5,190 p.)
Super, dziękuje serdecznie.

Podobne pytania

0 głosów
2 odpowiedzi 428 wizyt
pytanie zadane 29 sierpnia 2019 w Java przez manager96 Bywalec (2,050 p.)
0 głosów
1 odpowiedź 188 wizyt
pytanie zadane 24 kwietnia 2020 w Java przez danielo665 Obywatel (1,040 p.)
0 głosów
1 odpowiedź 381 wizyt
pytanie zadane 8 grudnia 2019 w C i C++ przez czowiek Początkujący (390 p.)

92,539 zapytań

141,382 odpowiedzi

319,479 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...