Co to są prymitywy?

0

Czym są prymitywy w tablicach ? Po co są i jak działają ?

0

'Prymitywy' (lepiej chyba brzmi 'typy prymitywne', choc oba sie moga kojarzyc bardziej z ludzmi niz z Java ;) ) to wszystkie typy zmiennych w Javie, ktore nie sa obiektami. Java tak naprawde, w przeciwienstwie do np. C#, nie jest 100%owym jezykiem obiektowym. Pewne 'podstawowe' typy zmiennych sa wlasnie 'prymitywne', tzn. operujemy w kodzie bezposrednio na ich wartosciach, a nie na referencjach do nich. W Javie sa to: boolean, byte, char, short, int, long, float oraz double. Tablice typow prymitywnych to po prostu obiekty zawierajace w sobie zmienne okreslonego typu prymitywnego, np. jako int[] oznaczamy tablice liczb calkowitych, w ktora mozemy wsadzic ile nam sie podoba int'ow (zaleznie od tego, jak ja zainicjalizujemy). Piszac int[] arr = new int[10]; instancjonujemy w Javie tablice 10 int'ow, a zeby np. ustawic wartosc ktoregos (w tym wypadku 4tego) z nich, piszemy: arr[3] = 15; Po co sa? Chyba po to, zeby cokolwiek mozna bylo zrobic w Javie ;) Prymitywy sluza np. jako liczniki w petlach, flagi (boolean) itp., z nich rowniez budujemy bardziej zlozone klasy. Tablice (niekoniecznie prymitywow) sa np. podstawa dzialania wielu bardziej zaawansowanych kolekcji, czy struktur danych w Javie.

Po wiecej informacji zaprszam np. na http://java.sun.com/docs/books/tutorial/

0
Kordzik napisał(a)

Java tak naprawde, w przeciwienstwie do np. C#, nie jest 100%owym jezykiem obiektowym.
C# też zawiera typy przekazywane jedynie przez wartość. Do tych typów należą również string i całe struktury.

0

Owszem (choc co do stringa to mam watpliwosci, ale nie spieram sie - zaden ze mnie ekspert od c# ;) ), sa chyba nawet specjalne slowka kluczowe w c# do przekazywania parametrow metodzie przez referencje / wartosc. Ale nie zmienia to faktu, ze wszystkie dane, na ktorych operuje sie w c# to obiekty. Rowniez string (czyli System.String) i kazdy struct. Dziedzicza one po klasie Object, moga implementowac interfejsy, posiadają metody - to jest fundamentalna roznica w stosunku do np. int'a w Javie, ktory jest po prostu 32-bajtowym 'klockiem' w pamieci.

0

To, że int posiada metody nie oznacza, że nie jest "po prostu 32-bajtowym 'klockiem' w pamieci" ;). int'a bez tzw boxing'u nie zamienisz w object. W każdym razie string jest taki pół na pół, natomiast struktury oraz typy całkowite i zmiennoprzecinkowe przekazywane są przez wartość. Leżą na stosie, albo w pamięci const. Owszem, mają dość spore cechy obiektów, jednak są pewne fundamentalne różnice między prawdziwymi obiektami. Są to tzw. Value Types.

0

No wlasnie ja myslalem zawsze ze u Was int'y, boolean'y itd. to tylko aliasy do obiektów (czy struktur - w kazdym razie czegos wiekszego niz 32 bajty w pamieci :) ) i ze nie ma dzieki temu calego tego boxing'owego zamieszania, z ktorym borykamy sie w Javie. Ale tak jak mowie - moja wiedza o c# jest ograniczona, wiec nie mam podstaw do prowadzenia konstruktywnej polemiki w tym temacie ;)

0

Nie wiem co robię w tym dziale, ale co tam...

Hmm... int to 32 bajty?? Mnie wszędzie uczyli że ma on 4 bajty, jeżeli jest skalarem (brzmi ładniej niż prymityw) i jest kompilowany w 32-bit kompilatorze...

0

haha Kordzik stary chlorze ale cie teraz zalamal koles nade mna!
pozdro

0

No tak bity i bajty, nigdy sie tego nie naucze ;> Ale czy zawsze i wszedzie ma on 32 bity to bym sie nie zakladal. Wiem ze tyle w Javie

0

Na wszystkich 32-bit platformach (języki interpretowane i kompilowane do kodu pośredniego) lub na 32-bit kompilatorze (kompilowane bezpośrednio do kodu maszynowego), i musi być typem prostym.

0

Na 64 bitowych platformach int to też 32 bity ;)

0

Ale to zależy od kompilatora, może ktoś kto zrobi kompilator ustawić int jako 64 bity. Ja jeszcze gdzieś mam 16-bit kompilatory, a tam int to 16 bitów, więc to co napisałem jest prawdziwe. A zresztą, NIE pisałem że TYLKO na 32-bit int(eger) ma 32 bity...

0

16 bit kompilator do C#, ciekawe :)

int ma zawsze 32 bity

0

A jak stworze wlasny jezyk i napisze do niego maszyne wirtualna i kompilator i pod nazwa int zdefiniuje w nim 64bitowa liczbe zmiennoprzecinkowa? ;)

0

@adf88: Ja tam o Javie i c# nie mówię, mówię po prostu o bliżej niezidentyfikowanym języku... 16-bit kompilator mam do C++ i Delphi.

@Kordzik: Ale to nie jest int. Int z założenia jest liczbą całkowitą, najczęściej 32-bit.

0

Temat jest o Javie który zszedł porównawczo do C#. I tak poleciałem lekko off-topem, ale ty manfredek to już po całości jeśli masz na myśli dowolny język ;)
heh, chyba, że masz na myśli własnego C# z napisanym własnym kompilatorem ;) :D

0

Ja tam tylko wytknąłem błąd, poza tym najchętniej to nawet bym nie wchodził do tego działu, tak samo jak bawił się Brudnopisem...

1 użytkowników online, w tym zalogowanych: 0, gości: 1