logo

Zmienne i niezmienne w Javie

Java jest obiektowym językiem programowania. Ponieważ jest to język programowania zorientowany obiektowo, wszystkie jego metody i mechanizmy kręcą się wokół obiektów. Jedna koncepcja oparta na obiektach jest zmienna i niezmienne w Javie . Obiekty w Javie są zmienne lub niezmienne; zależy to od tego, jak obiekt może być iterowany.

W tej sekcji omówimy zmienne i niezmienne obiekty w Javie. Co więcej, zobaczymy różnicę między nimi.

Co to są obiekty zmienne

Obiekty mutable to obiekty, których wartość można zmienić po inicjalizacji. Możemy zmienić wartości obiektu, takie jak pole i stany, po utworzeniu obiektu. Na przykład, Java.util.Date , Konstruktor ciągów , Bufor ciągów itp.

Kiedy dokonamy zmiany w istniejących obiektach, które można modyfikować, nie zostanie utworzony żaden nowy obiekt; zamiast tego zmieni wartość istniejącego obiektu. Klasy tych obiektów udostępniają metody umożliwiające wprowadzanie w nich zmian.

Gettery i Settery (metody get() i set()) są dostępne w obiektach modyfikowalnych. Obiekt Mutable może, ale nie musi, być bezpieczny dla wątków.

polecenia systemu Linux tworzą folder

Co to są obiekty niezmienne

Obiekty niezmienne to obiekty, których wartości nie można zmienić po inicjalizacji. Po utworzeniu obiektu nie możemy nic zmienić. Na przykład, prymitywne przedmioty takie jak int, długi , platforma , podwójnie , wszystkie starsze klasy, Klasa opakowania , Klasa string itp.

Krótko mówiąc, niezmienne oznacza niezmodyfikowane lub niezmienne. Po utworzeniu obiektów niezmiennych nie można zmienić ich wartości ani stanu.

Dostępne są tylko metody pobierające (metoda get()), a nie metody ustawiające (metoda set()) dla obiektów niezmiennych.

Zobaczmy, jak utworzyć klasy dla obiektów zmiennych i niezmiennych.

Jak utworzyć zmienną klasę

Aby utworzyć zmienną klasę, niezbędne są dwie następujące rzeczy:

  • Metody modyfikacji wartości pól
  • Gettery i settery obiektów

Rozważ poniższy przykład klasy mutable:

karta SIM jest włożona, ale nie ma usługi Android
 public class JtpExample { private String s; JtpExample(String s) { this.s = s; } public String getName() { return s; } public void setName(String coursename) { this.s = coursename; } public static void main(String[] args) { JtpExample obj = new JtpExample('JavaTpoint'); System.out.println(obj.getName()); // Here, we can update the name using the setName method. obj.setName('Java Training'); System.out.println(obj.getName()); } } 

Wyjście:

 JavaTpoint Java Training 

Z powyższego przykładu zmieniamy wartość nazwy za pomocą metody setName.

Jak utworzyć niezmienną klasę

Do utworzenia niezmiennej klasy niezbędne są następujące rzeczy:

  • Klasa końcowa, która jest zadeklarowana jako ostateczna i nie można jej przedłużyć.
  • Wszystkie pola powinny być prywatne, aby bezpośredni dostęp do pól był zablokowany.
  • Żadnych seterów
  • Wszystkie modyfikowalne pola powinny być ostateczne, aby nie można było ich powtórzyć po zainicjowaniu.

Rozważ poniższy przykład:

 public class JtpExample1 { private final String s; JtpExample1(final String s) { this.s = s; } public final String getName() { return s; } public static void main(String[] args) { JtpExample obj = new JtpExample('Core Java Training'); System.out.println(obj.getName()); } } 

Wyjście:

 Core Java Training 

Dlatego omówiliśmy zmienne i niezmienne obiekty i klasy. Omówmy różnice między nimi:

Różnica między obiektami zmiennymi i niezmiennymi

Poniżej przedstawiono kluczowe różnice między obiektami zmiennymi i niezmiennymi w Jawa :

zestaw c++
  • Zmienne obiekty można zmienić na dowolną wartość lub stan bez dodawania nowego obiektu. Natomiast niezmiennych obiektów nie można zmienić na wartość ani stan po ich utworzeniu. W przypadku obiektów niezmiennych, za każdym razem gdy zmienimy stan obiektu, zostanie utworzony nowy obiekt.
  • Obiekty zmienne zapewniają metodę zmiany zawartości obiektu. Dla porównania, obiekty niezmienne nie zapewniają żadnej metody zmiany wartości.
  • Obiekty zmienne obsługują zarówno metody ustawiające, jak i pobierające. Dla porównania, obiekty niezmienne obsługują tylko obiekty ustawiające, a nie pobierające.
  • Obiekty Mutable mogą, ale nie muszą, być bezpieczne dla wątków, ale obiekty niezmienne są domyślnie bezpieczne dla wątków.
  • Przykładami klas modyfikowalnych są StringBuffer, Java.util.Date, StringBuilder itp. Natomiast obiektami niezmiennymi są starsze klasy, klasy opakowujące, klasa String itp.

Rozważ poniższą tabelę:

Zmienny Niezmienny
Możemy zmienić wartość zmiennych obiektów po inicjalizacji. Po zainicjowaniu niezmiennego obiektu; Nie możemy zmienić jego wartości.
Stan można zmienić. Stanu nie można zmienić.
W obiektach zmiennych nie powstają żadne nowe obiekty. W obiektach niezmiennych nowy obiekt tworzony jest po zmianie wartości obiektu.
Zapewnia metody zmiany obiektu. Nie zapewnia żadnej metody zmiany wartości obiektu.
Obsługuje metody get() i set() do usuwania obiektu. Obsługuje tylko metodę get() do przekazywania wartości obiektu.
Klasy zmienne mogą, ale nie muszą, być bezpieczne dla wątków. Klasy niezmienne są bezpieczne dla wątków.
Do stworzenia klasy modyfikowalnej niezbędne są metody modyfikowania pól, metody pobierające i ustawiające. Do stworzenia niezmiennej klasy potrzebne są klasa końcowa, pola prywatne i obiekty mutowalne.

Dlaczego ciągi znaków w Javie są niezmienne

String w Javie to bardzo szczególna klasa, ponieważ jest używana niemal w każdym programie w Javie. Dlatego niezmiennym jest zwiększanie wydajności i bezpieczeństwa. Rozumiemy to szczegółowo:

W Javie łańcuchy wykorzystują koncepcję literałów. Załóżmy, że mamy obiekt mający wiele zmiennych referencyjnych. W takim scenariuszu, jeśli zmienimy wartość zmiennej referencyjnej, będzie to miało wpływ na cały obiekt i wszystkie jego wartości.

metody Javy

Oprócz powyższych powodów, za niezmienność ciągu odpowiedzialne są również następujące powody:

Obiekty niezmienne są bardzo proste; nie ma potrzeby synchronizacji i są z natury bezpieczne dla wątków. Jednak obiekty niezmienne są dobrymi cegiełkami dla innych obiektów, dlatego musimy zapewnić im szczególną ostrożność.

Większość programistów tworzy ciąg jako obiekt końcowy, tak że nie można go później zmienić.

Wniosek

Omówiliśmy zmienne i niezmienne obiekty w Javie, teraz mamy pełną wiedzę na temat zarówno zmiennych, jak i niezmiennych obiektów i klas. Co więcej, widzieliśmy, jak stworzyć zmienną i niezmienną klasę.

Należy zauważyć, że obiekty niezmienne mogą zostać zmienione na ich wartość i stan po zainicjowaniu i mogą, ale nie muszą, być bezpieczne dla wątków. Dla porównania, niezmiennych obiektów nie można zmienić na ich stan i wartość oraz domyślnie są one bezpieczne dla wątków.