Typy danych w Javie: pierwotne i nieprymitywne typy danych
Opublikowany: 2020-12-01Spis treści
Wstęp
W dowolnym języku programowania typ danych to przypisanie danych, które pozwala komputerowi lub kompilatorowi wiedzieć, w jaki sposób programiści chcą przypisać dane. Typ danych dodaje ograniczenie do zmiennych lub funkcji podczas przypisywania wartości.
Te typy danych definiują zachowanie danych, takie jak sposób przechowywania wartości tego typu i operacje, które można wykonać na danych. Przyjrzyjmy się wszystkim typom danych dostarczanych przez java.
Prymitywne typy danych
Pierwotnego typu danych nie można dalej podzielić na prostszy typ danych. Java zapewnia 8 prymitywnych typów danych, przyjrzyjmy się im!
Bajt
Bajt jest typem typu Integer, który przechowuje liczby całkowite w zakresie od -128 do 127, co usuwa problemy z ograniczeniem pamięci, jeśli masz do czynienia z małymi liczbami, ponieważ wymaga tylko 1 bajta pamięci. Zmienną bajtową można zadeklarować za pomocą słowa kluczowego „byte”. Przypisanie do bajtu wartości większej niż 127 powoduje wygenerowanie błędu „niezgodne typy”.
bajt n1 = 98 ; System . się . println(n1); |
Powyższy fragment kodu drukuje 98 zgodnie z oczekiwaniami.
Krótki
Short to typ Integer, który przechowuje liczby całkowite w zakresie od -32768 do 32767, zużywa 2 bajty pamięci z dysku. Krótka zmienna może być zadeklarowana za pomocą słowa kluczowego „short”. Przypisanie wartości większej niż 32767 do krótkiej zmiennej powoduje wygenerowanie błędu „niezgodne typy”.

krótkie n1 = 9876 ; System . się . println(n1); |
Powyższy fragment kodu wyświetla 9876 jako dane wyjściowe.
Int
Int to typ całkowity, który przechowuje liczby całkowite z zakresu od -2147483648 do 2147483647, zajmuje 4 bajty pamięci na dysku. Generalnie programiści wolą bardziej używać int do deklarowania zmiennej przechowującej wartości liczbowe. Kompilator Java zgłasza błąd „niezgodne typy”, jeśli próbuje przypisać wartość większą niż zakres.
int n1 = 987654 ; System . się . println(n1); |
Powyższy fragment kodu drukuje 987654 jako dane wyjściowe.
Długi
Teraz jest to coś ciekawego typu danych, który zajmuje 8 bajtów pamięci na dysku. Jest to typ liczb całkowitych, który przechowuje liczby całkowite z zakresu od -9223372036854775808 do 9223372036854775807. Uff, odczytanie tego zakresu zajmuje dużo czasu.
Jest to używane, gdy typ danych int przepełnia się dla wykonywanych przez nas operacji. Pamiętaj, że podczas przypisywania musimy zakończyć wartość literą „L”.
długi n1 = 987654321098765L ; System . się . println(n1); |
Powyższy fragment kodu drukuje 987654321098765 zgodnie z oczekiwaniami.
Pływak
Float to zmiennoprzecinkowy typ danych, co oznacza, że może przechowywać wartości, w tym ich dokładność dziesiętną. Załóżmy, że opracowałeś kod do zapisywania wszystkich wydatków, ale jesteś dość surowy i chcesz śledzić każdą wydaną złotówkę. W takim przypadku int nie wykona zadania, ponieważ int może przechowywać tylko liczby całkowite.
Do tego zadania potrzebujemy typu danych zmiennoprzecinkowych. Pływak może przechowywać liczby ułamkowe w zakresie od 3.4e-038 do 3.4e+038, może przechowywać do 7 cyfr z dokładnością dziesiętną. Pamiętaj, że powinieneś zakończyć wartość literą „f”.
liczba zmiennoprzecinkowa n = 98,76f ; System . się . println(n); |
Powyższy fragment kodu drukuje 98,76 jako dane wyjściowe.
Przeczytaj: Właściwości i zalety JavaBeans: jak należy je wykorzystać?
Podwójnie
Podwójna jest podobna do zmiennoprzecinkowej, ale jak sama nazwa wskazuje, jest to podwójna wartość zmiennoprzecinkowa w przypadku precyzji dziesiętnej. Może mieć 15-cyfrową precyzję dziesiętną i może przechowywać liczby ułamkowe w zakresie od 1,7e-308 do 1,7e+308. Pamiętaj, że musisz zakończyć wartość „d”.
Przejdźmy przez kod, aby zrozumieć różnicę między float a double.
Test klasy publicznej { public static void main ( String args[]) { pływak a1 = 1.f / 70 ; pływak b1 = 0 ; podwójne a2 = 1.d / 70 ; podwójne b2 = 0 ; pływak f1 = 1f ; podwójne f2 = 1d ; dla ( int i = 0 ;i < 490 ;i ++ ){ b1 = b1 + a1; b2 = b2 + a2; jeśli (i > 1 && i <= 50 ){ f1 = f1 * i; f2 = f2 * i; } } System . się . println(b1); //linia 1 System . się . println(b2); //linia 2 System . się . println(f1); //linia3 System . się . println(f2); //wiersz4 } } |
Odręczne obliczenie wyrażenia „(1/70)*490” daje nam 7 jako odpowiedź, ale wykonanie go w javie za pomocą float i double daje inną odpowiedź. W powyższym fragmencie, zmienna typu float i zmienna double są inicjowane z wartością 1/70, a dodanie tej wartości do innej zmiennej 490 razy powinno dać nam 7 jako odpowiedź.

Po uruchomieniu powyższego fragmentu wiersza 1 wypisuje 6.9999795, który ma 7-cyfrową precyzję dziesiętną, podczas gdy wiersz 2 wypisuje 6.999999999999978, który ma 15-cyfrową precyzję dziesiętną. Więc jeśli float nie zapewnia dokładnej dokładności dziesiętnej, możesz wybrać opcję double. Ponadto istnieje większe prawdopodobieństwo, że pływak osiągnie nieskończoność, ponieważ zakres pływaka jest mniejszy w porównaniu z podwojeniem.
Na przykład, jeśli przechowujesz silnię znacznej liczby, to ta zmienna osiąga nieskończoność. Z powyższego fragmentu możemy zobaczyć, że istnieją dwie zmienne używane do przechowywania silni 50 i w momencie, gdy wypisujemy wynik, wiersz 3 wyświetla nieskończoność, a wiersz 4 wyświetla 3.0414093201713376E64, więc jeśli float nie odpowiada wartości liczbowej zakres wtedy możesz zdecydować się na podwójne.
Zarówno float, jak i double mogą być używane jako liczby naukowe z 'e', gdzie 'e' oznacza potęgę 10. Na przykład 3e2f jest równoważne 300.0 w typie danych float, a 3e4d jest równoważne 30000.0 w typie danych double.
Boole'a
Typ danych boolowskich może przyjmować tylko dwie wartości prawda i fałsz. Jest deklarowany za pomocą słowa kluczowego boolean w java. Ten typ danych jest zwykle używany jako zmienna flagowa do śledzenia zmian, które wprowadzamy w kodzie. Na przykład ustawienie flagi na true, jeśli liczba jest podzielna przez 2, w przeciwnym razie false.
flaga logiczna = prawda ; wartość logiczna b1 = fałsz ; System . się . println(flaga); //wypisuje prawda System . się . println(b1); //wypisuje fałsz |
Zwęglać
Typ danych char służy do przechowywania pojedynczego znaku, ten typ danych można zadeklarować za pomocą słowa kluczowego char. Pamiętaj, że podczas przypisywania musimy ująć znak w pojedyncze cudzysłowy, może on przechowywać zarówno małe, jak i duże litery w typie danych char.
Przechowywanie więcej niż jednego znaku w typie danych char generuje błąd. Jest też zabawny fakt dotyczący typu danych char, który polega na tym, że rzutowanie typu char na liczbę całkowitą przechowuje wartość ASCII tego znaku i odwrotnie.
znak c1 = ' a ' ; znak c2 = 66 ; System . się . println(c1); //linia 1 System . się . println(c2); //linia 2 System . się . println(( int )c1); //linia3 |
W powyższym pierwszym wierszu fragmentu kodu wypisuje 'a' jako wyjście, co jest zgodne z oczekiwaniami. Linia 2 wypisuje 'B' jako wyjście, ponieważ 66 odnosi się do B w tablicy ASCII. Linia 3 wypisuje 97 jako wynik, ponieważ jest to wartość ASCII 'a'.
Ale co, jeśli chcemy przechowywać więcej niż jedną postać? Przyjdziemy do nich w kolejnych akapitach.
Przeczytaj także: 17 ciekawych pomysłów i tematów na projekty Java dla początkujących
Nieprymitywne typy danych
Niepierwotne typy danych w java są również nazywane typami referencyjnymi, ponieważ odnoszą się do obiektów. Nieprymitywne typy danych są tworzone przez programistę i nie są predefiniowane. Ponieważ obiekty nieprymitywne są określane jako obiekty, można im przypisać wartość null, co nie ma miejsca w przypadku typu pierwotnego.
W przeciwieństwie do pierwotnych typów danych, niepierwotny typ danych musi zaczynać się od dużej litery. Wszystkie nieprymitywne typy danych mają jednakowy rozmiar i zajmują tyle samo pamięci na dysku, co jest inne w przypadku pierwotnych typów danych.
Strunowy
Ciąg znaków jest specjalnym typem danych w javie, co jest sprzeczne z faktem, że typy nieprymitywne są definiowane przez programistów. Typ danych string nie jest pierwotnym typem danych, ale jest predefiniowany w javie, niektórzy nazywają go również specjalnym dziewiątym pierwotnym typem danych.
To rozwiązuje przypadek, w którym char nie może przechowywać wielu znaków, typ danych typu string służy do przechowywania sekwencji znaków. Pamiętaj, że musisz ująć sekwencję tekstu w cudzysłów.
String s1 = „ Hej tam ” ; System . się . println(s1); |
Powyższy fragment kodu wyświetli „Hej tam” zgodnie z oczekiwaniami.
Tablice, klasy, interfejsy itp. to kilka innych nieprymitywnych typów danych w javie.
Jak obliczyć zakres typów danych?
Po obejrzeniu zakresów prymitywnych typów danych możesz mieć wątpliwości, czy musimy o tym pamiętać?. Cóż, odpowiedź brzmi NIE. Ale musimy pamiętać o rozmiarze każdego typu danych, a następnie możemy obliczyć zakres tego typu danych.
Na przykład typ danych bajt zajmuje 1 bajt pamięci na dysku. Na poziomie kompilatora wszystkie dane są przechowywane w postaci bitów, a jeden bajt ma 8 bitów. Teraz jeden z 8 bitów jest używany do określenia znaku liczby, a pozostałe 7 bitów może przechowywać rzeczywistą liczbę, więc maksymalna liczba, jaką możemy przechowywać za pomocą 7 bitów, wynosi 128.
Tak więc -128 to dolna granica typu danych bajtowych, a +127 to górna granica, ponieważ zero jest pierwszą liczbą w wierszu liczbowym po liczbach ujemnych.
Podobnie w typach zmiennoprzecinkowych dane są dzielone na 3 części ze znakiem bitowym, mantysę i wykładnik. Część mantysy służy do przechowywania dokładności dziesiętnej, liczba zmiennoprzecinkowa ma 23 bity mantysy plus jeden bit ukryty, a podwójna ma 52 bity mantysy plus jeden bit ukryty.
W przypadku liczby zmiennoprzecinkowej log(2^24)/log(10), która jest w przybliżeniu równa 7, a więc 7-cyfrowa precyzja dziesiętna.
W przypadku double, log(2^53)/log(10), co jest w przybliżeniu równe 15, czyli 15-cyfrowa precyzja dziesiętna.

Zapisz się na kursy inżynierii oprogramowania z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.
Wniosek
Widzieliśmy różne typy danych w javie, rozumiane prymitywne i nieprymitywne typy danych, różnicę między prymitywnymi i nieprymitywnymi. Przeszedłem przez przykładowe fragmenty kodu, aby mieć podstawową wiedzę na temat deklaracji typów danych.
Zrozumienie, jak obliczyć zakres różnych typów danych typów danych całkowitych, jak obliczyć dokładność dziesiętną typów danych zmiennoprzecinkowych.
Teraz, gdy znasz już różne typy danych w java, zacznij je poznawać!
Jeśli chcesz dowiedzieć się więcej o Javie, programach OOP i tworzeniu pełnego stosu oprogramowania, zapoznaj się z programem Executive PG UpGrad i IIIT-B w zakresie tworzenia pełnego stosu oprogramowania, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 500 godzin rygorystycznego szkolenia, Ponad 9 projektów i zadań, status absolwentów IIIT-B, praktyczne praktyczne projekty zwieńczenia i pomoc w pracy z najlepszymi firmami.
