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

Przeciążanie metod.

Object Storage Arubacloud
0 głosów
142 wizyt
pytanie zadane 27 lutego 2021 w Java przez fulbi Obywatel (1,010 p.)

Dlaczego akurat metoda z dwoma artgumentami double jest wykonywana?

class Main{
    public static class OverloadingDemo {

        public static void method(int i, float f) {
            System.out.println("1");
        }

        public static void method(float f, int i) {
            System.out.println("2");
        }

        public static void method(int i1, int i2) {
            System.out.println("3");
        }

        public static void method(double d1, double d2) {
            System.out.println("4");
        }

        public static void main(String[] args) {
            method(1f, 1f);
        }
    }
}

 Jest to zwiazane z rzutowaniem typow?

1
komentarz 27 lutego 2021 przez michal100032 Początkujący (390 p.)
Wydaje mi się że to dlatego że nie dojdzie to rzutowanie stratnego tzn. rzutując floata na doubla nie zostaną utracone żadne dane bo double jest jeszcze dokładniejszy od floata. W przypadku pozostałych funkcji rzutując na inta liczba zostanie zaokrąglona a cyfry po przecinku - utracone.
1
komentarz 27 lutego 2021 przez Wiciorny Ekspert (269,790 p.)
dojdzie w ostateczności, PROGRAM widzi typ float, jako zmiennoprzecinkowy a double także jest zmiennoprzecinkowy a integer jest typu całkowitego. dlatego float  będzie traktowane jako double

1 odpowiedź

+1 głos
odpowiedź 27 lutego 2021 przez Wiciorny Ekspert (269,790 p.)
wybrane 27 lutego 2021 przez fulbi
 
Najlepsza

Dlatego że Float, int nie może być wykonany bo FLOAT  -> z racji precyzji najpierw będzie  miał proytet do double, potem dopiero do integera czyli najprostszego. 
Nie może być także wykonany int,Float z analogicznego punktu widzenia. 

Weź na uwagę typ INT - jest typem prostym jak inne ale CAŁKOWITO-LICZBOWYM, CAŁKOWITYM , natomiast float i double to typy zmienno przecinkowe 
Typy zmiennoprzecinkowe reprezentują liczby z częścią ułamkową, zawierającą jedną lub więcej miejsc po przecinku. Istnieją dwa typy: zmiennoprzecinkowe i podwójne dlatego ... float -> będzie najpierw double a nie integer. 

Odpowie Ci na to https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html dokumentacja też 

Podobne pytania

+1 głos
1 odpowiedź 282 wizyt
pytanie zadane 22 października 2018 w Java przez MarcinZielony Użytkownik (710 p.)
+1 głos
3 odpowiedzi 856 wizyt
0 głosów
2 odpowiedzi 157 wizyt
pytanie zadane 8 kwietnia 2021 w Java przez Lulex Użytkownik (820 p.)

92,568 zapytań

141,421 odpowiedzi

319,626 komentarzy

61,956 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!

...