Wpis z mikrobloga

Standardowo, jaki jest wynik próby kompilacji i wykonania poniższego kodu?

```

final Integer a = 100;
final Integer b = 100;
Integer c = 200;
Integer d = 200;
final boolean ab = (a == b);
final boolean cd = (c == d);
System.out.println(ab + ", " + cd);
```

Jak zawsze, odpowiedzi i podpowiedzi zostaną usunięte a autorzy zablokowani.

#interfacesmieci
#java #naukaprogramowania

Standardowo, jaki jest wynik próby kompilacji i wykonania poniższego kodu?

  • Błąd kompilacji 8.9% (98)
  • true, true 37.5% (412)
  • false, false 8.6% (94)
  • true, false 15.9% (175)
  • false, true 7.7% (84)
  • nie wiem 21.4% (235)

Oddanych głosów: 1098

  • 104
  • Odpowiedz
Long ma na stałe wpisane wartości - nie można ich konfigurować


@GotoFinal: No tak tylko że do Java8 samo cacheowanie Long to był szczegół implementacyjny. Równie dobrze mógłbyś otrzymać false, false.
Dopiero od 9 dodali to do JLS.

@afe1 -XX:AutoBoxCacheMax=
  • Odpowiedz
@interface: Ja tam nigdy nie potrzebuje wyjaśnień bo nawet jak czegoś nie wiem, to zaraz sam sobie szukam z czystej ciekawości i chęci rozwoju. No chyba, że nie mogę czegoś znaleźć albo coś mi się nie zgadza to wtedy pytam u źródła np. tak jak np. z tym cachem Long.
  • Odpowiedz
@63274682374: no i wlasnie napisales mi dlaczego ja nie chce tu odpowiedzi i podpowiedzi, sens wolania wszystkich i pisania im to samo co jest wyzej jest juz znikomy, a kto chce to moze: oszukac, sprawdzic, wybrac losowa odpowiedz, samemu sie dowiedziec. dlatego wolam wszystkich plusujacych zeby wszystkim napisac o co w tym chodzilo.
  • Odpowiedz
no i wlasnie napisales mi dlaczego ja nie chce tu odpowiedzi i podpowiedzi, sens wolania wszystkich i pisania im to samo co jest wyzej jest juz znikomy, a kto chce to moze: oszukac, sprawdzic, wybrac losowa odpowiedz, samemu sie dowiedziec. dlatego wolam wszystkich plusujacych zeby wszystkim napisac o co w tym chodzilo


@interface: Wiesz to tylko moje podejście, są ludzie dla których trzeba wszystko łopatologicznie, punkt po punkcie w jednym miejscu
  • Odpowiedz
@afe1 -XX:AutoBoxCacheMax=


@63274682374: jest jeszcze inna flaga: -XX:+AggressiveOpts ktora ustawia na 20000

Ja tam nigdy nie potrzebuje wyjaśnień bo nawet jak czegoś nie wiem, to zaraz sam sobie szukam z


@63274682374: a jak ktos nie potrafi znalezc? albo znajdzie bledne i sie tak nauczy? powinna byc podana odpowiedz IMO
  • Odpowiedz
No chyba, że nie mogę czegoś znaleźć albo coś mi się nie zgadza to wtedy pytam u źródła np. tak jak np. z tym cachem Long.

Wiesz to tylko moje podejście, są ludzie dla których trzeba wszystko łopatologicznie, punkt po punkcie w jednym miejscu pisać.


@afe1:
  • Odpowiedz
@GotoFinal: W JDK8 tak, bo sobie bo sobie sprawdziłem ale jestem ciekawy jak to jest w JDK >= 9, bo jeśli tak samo to chłopaki nie nadążają ze zmianami w dokumentacji

JDK9, Long.valueOf()
...
Note that unlike the corresponding method in the Integer class, this method is not required to cache values within a particular range.
...
  • Odpowiedz
@63274682374: ale też może to jest inaczej ogarnięte, bo specyfikacja pewnie tylko mówi o tym że takie wartości mają być cachowane, ale jak nie określa jak? to już chyba inna sprawa ¯\_(ツ)_/¯ możesz zgłosić i zobaczyć czy coś zrobią.
  • Odpowiedz
  • 0
False false bo to są obiekty różne i się chyba przez getter wartość bierze ale ja nie piszę w javie więc mogę się mylić bo miałem ją tylko na studia
  • Odpowiedz