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

Zastosowanie inicjalizatora static

Object Storage Arubacloud
0 głosów
190 wizyt
pytanie zadane 19 grudnia 2017 w Java przez rubesom Obywatel (1,690 p.)
Hej

 

Z tego co przeczytałem to do inicjalizatora static używa się głównie zmiennych statycznych i stałych.

Mam pytanie czy można korzystać z tej funkcjonalności w inny sposób? Chodzi mi o to,że mogę wykorzystać ten inicjalizator do wywołania każdego innego kodu (kompilator mi tego nie zabrania) ale czy jest to poprawne?
komentarz 19 grudnia 2017 przez Aisekai Nałogowiec (42,190 p.)
W jakim sensie? Podaj przykład

1 odpowiedź

0 głosów
odpowiedź 19 grudnia 2017 przez stooczu Początkujący (480 p.)
wybrane 20 grudnia 2017 przez rubesom
 
Najlepsza
Zmienne stałe deklarujesz poprzez const. Oznacza to ze nie mozesz zmienić raz przypisanej wartości do zmiennej. W definicji funkcji zmienne oznaczone jako const to informacja dla kompilatora ze nie mogą one być zmienione w ciele funkcji.

Co do static. Pola statyczne mają to do siebie, że nie są polem bezpośrednio jakiegoś konkretnego obiektu (instancji) a są wspólne dla obiektów wszystkich klas. Dla przykładu funkcja statyczna klasy będzie wspólna dla wszystkich obiektów, tzn. Że jest zawarta w danej klasie ale do jej wywołania nie potrzebujemy konkretnej instancji obiektu.

Z pól statycznych należy korzystać mądrze, wrzucanie ich "na pałe" w kod żeby działało to nie jest dobre rozwiązanie

 

Edit: przepraszam nie zauważyłem ze chodzi o jave. Myślałem że pytasz o cpp
komentarz 19 grudnia 2017 przez KubenQPL Maniak (62,820 p.)
W javie stałe deklaruje się "static final" a finalne zmienne samym "final"
komentarz 19 grudnia 2017 przez stooczu Początkujący (480 p.)
Z tego co pamiętam static to static a final da Ci tyle że w przypadku próby nadpisania final, np. Przez klase dziedziczącą zostanie zwrócony błąd.
komentarz 19 grudnia 2017 przez Tomasz90 Nałogowiec (25,140 p.)
Tylko rozszerzanie klasy oznaczonej jako final powoduje błąd, stałe można dowolnie nadpisywać w klasach dziedziczących
komentarz 19 grudnia 2017 przez rubesom Obywatel (1,690 p.)

Przepraszam, że odpisuję dopiero teraz.

Chodziło mi o coś takiego:


public class Testy2 
{

	public static int zmienna1;

	
	static
	{
		zmienna1++;
	}
	
}

 

Prosty przykład z licznikiem.

Ale czy do takiego inicjalizatora można wsadzać więcej kodu czy jest to raczej zła praktyka programowanie? Mam na myśli np. wywoływanie jakichś metod czy raczej powinno się to tylko odnosić do zmiennych statycznych?

komentarz 20 grudnia 2017 przez Tomasz90 Nałogowiec (25,140 p.)
W bloku statycznym nie możesz odnosić się do innych zmiennych niż statycznych bo nie są one jeszcze zainicjalizowane. Blok wywoływany jest tylko raz (gdy klasa zostanie wczytana). Można umieścić więcej kodu, jeżeli wymaga tego sytuacja. Z wnętrza bloku możesz równie dobrze wywołać metody statyczne, które zrobią to samo.

Podobne pytania

0 głosów
1 odpowiedź 200 wizyt
pytanie zadane 20 stycznia 2019 w Java przez ShockOfficial Początkujący (390 p.)
0 głosów
2 odpowiedzi 783 wizyt
pytanie zadane 18 października 2017 w Java przez Dawidos01111 Nowicjusz (160 p.)
+1 głos
2 odpowiedzi 1,772 wizyt
pytanie zadane 13 października 2016 w Java przez rubesom Obywatel (1,690 p.)

92,567 zapytań

141,420 odpowiedzi

319,616 komentarzy

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

...