Typy danych

W Javie, jak w większości języków programowania, istnieje kilka podstawowych typów danych, które pozwalają programiście przechowywać i manipulować różnego rodzaju danymi. Java dzieli typy danych na dwa główne kategorie: typy proste (prymitywne) i typy złożone (obiektowe). Zrozumienie tych typów jest fundamentalne dla efektywnego programowania.

Typy Proste (Prymitywne)

Java definiuje 8 typów prymitywnych, które reprezentują pojedyncze wartości (nie są obiektami) i są przechowywane bardzo efektywnie.

  • byte: 8-bitowa wartość całkowita, zakres od -128 do 127.
  • short: 16-bitowa wartość całkowita, zakres od -32,768 do 32,767.
  • int: 32-bitowa wartość całkowita, zakres od -2^31 do 2^31-1. Jest to najczęściej używany typ liczbowy.
  • long: 64-bitowa wartość całkowita, zakres od -2^63 do 2^63-1, używany gdy wartości int nie są wystarczające.
  • float: 32-bitowa liczba zmiennoprzecinkowa, używana do precyzyjnych obliczeń na małych zakresach. Liczby typu float mają przyrostek F lub f. Na przykład 3.14F, aby odróżnić je od typu double podczas inicjalizacji zmiennej.
  • double: 64-bitowa liczba zmiennoprzecinkowa, standardowy wybór dla obliczeń zmiennoprzecinkowych ze względu na precyzję.
  • boolean: reprezentuje wartości logiczne true i false.
  • char: 16-bitowy typ Unicode reprezentujący pojedynczy znak.

Typy Złożone (Obiektowe)

W przeciwieństwie do typów prymitywnych, typy złożone (obiektowe) reprezentują instancje klas i umożliwiają przechowywanie złożonych danych oraz dostęp do metod umożliwiających operacje na tych danych.

  • String: Reprezentuje ciągi znaków. Chociaż String jest technicznie obiektem, jest na tyle powszechnie używany, że często jest traktowany osobno.
  • Tablice: Pozwalają przechowywać wiele elementów tego samego typu. Mogą być one typów prymitywnych lub obiektowych, np. int[], String[].
  • Klasy i Obiekty: Wszystko w Javie, co nie jest typem prymitywnym, jest obiektem. Obejmuje to instancje klas (np. File, InputStream, Thread) oraz specjalne typy obiektowe dla typów prymitywnych, np. Integer, Character.
  • Kolekcje: Java oferuje bogaty zestaw klas do pracy z kolekcjami obiektów, takich jak ArrayList, HashMap, które umożliwiają przechowywanie i manipulowanie grupami obiektów.

Przykłady:

int liczba = 100; // Typ prymitywny
String powitanie = "Witaj, świecie!"; // Typ obiektowy
float pi = 3.14f;
int[] liczby = {1, 2, 3, 4, 5}; // Tablica typu prymitywnego
ArrayList<String> listaNazw = new ArrayList<String>(); // Kolekcja typu obiektowego

Zrozumienie różnic między typami prymitywnymi a obiektowymi jest kluczowe w Javie, ponieważ wpływa to na sposób, w jaki wartości są przechowywane, przekazywane i manipulowane w programie. Typy prymitywne są zazwyczaj używane dla prostych wartości i operacji na nich, podczas gdy typy obiektowe oferują większą elastyczność i funkcjonalność kosztem większego zużycia pamięci i wydajności.