logo

Променливи и неизменни в Java

Java е обектно-ориентиран език за програмиране. Тъй като това е обектно-ориентиран език за програмиране, всичките му методи и механизми се въртят около обектите. Една обектно-базирана концепция е променлива и неизменен в Java . Обектите в Java са или променливи, или неизменни; зависи от това как обектът може да бъде повторен.

В този раздел ще обсъдим променливи и неизменни обекти в Java. По-нататък ще видим разликата между тях.

Какво представляват променливите обекти

Променливите обекти са обекти, чиято стойност може да бъде променена след инициализация. Можем да променим стойностите на обекта, като поле и състояния, след като обектът бъде създаден. Например, java.util.Date , StringBuilder , StringBuffer и т.н.

Когато сме направили промяна в съществуващи променливи обекти, няма да бъде създаден нов обект; вместо това ще промени стойността на съществуващия обект. Тези класове на обект предоставят методи за извършване на промени в него.

Getters и Setters ( get() и set() методи) са налични в променливи обекти. Обектът Mutable може или не може да бъде безопасен за нишки.

модифициращи клавиши

Какво представляват неизменните обекти

Неизменните обекти са обекти, чиято стойност не може да бъде променена след инициализация. Не можем да променим нищо, след като обектът е създаден. Например, примитивни предмети като int, дълго , плавам , двойно , всички наследени класове, Клас обвивка , Клас низ и т.н.

С две думи, неизменен означава немодифициран или непроменим. След като бъдат създадени неизменните обекти, стойностите на обекта и състоянието му не могат да бъдат променяни.

Налични са само Getters ( get() метод), но не Setters ( set() метод) за неизменни обекти.

Нека видим как да създаваме класове за променливи и неизменни обекти.

Как да създадете променлив клас

Следните две неща са от съществено значение за създаването на променлив клас:

  • Методи за промяна на стойностите на полетата
  • Getters и Setters на обектите

Разгледайте примера по-долу за променливия клас:

г джапанка
 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()); } } 

Изход:

 JavaTpoint Java Training 

От горния пример променяме стойността на името с помощта на метода setName.

Как да създадете неизменен клас

Следните неща са от съществено значение за създаването на неизменен клас:

  • Краен клас, който е деклариран като окончателен, така че да не може да бъде разширен.
  • Всички полета трябва да са лични, така че директният достъп до полетата да е блокиран.
  • Без сетери
  • Всички променливи полета трябва да са окончателни, така че да не могат да бъдат повторени, след като бъдат инициализирани.

Разгледайте примера по-долу:

 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()); } } 

Изход:

 Core Java Training 

Следователно обсъдихме променливите и неизменните обекти и класове. Нека обсъдим разликите между тях:

Разлика между променливи и неизменни обекти

По-долу са някои ключови разлики между променливи и неизменни обекти в Java :

формула на масон
  • Променливите обекти могат да бъдат променени на произволна стойност или състояние без добавяне на нов обект. Като има предвид, че неизменните обекти не могат да бъдат променени на тяхната стойност или състояние, след като бъдат създадени. В случай на неизменни обекти, всеки път, когато променим състоянието на обекта, ще бъде създаден нов обект.
  • Променливите обекти предоставят метод за промяна на съдържанието на обекта. Сравнително неизменните обекти не предоставят никакъв метод за промяна на стойностите.
  • Променливите обекти поддържат както сетерите, така и гетерите. Сравнително неизменните обекти поддържат само сетери, но не и гетри.
  • Променливите обекти могат или не могат да бъдат безопасни за нишки, но неизменните обекти са безопасни за нишки по подразбиране.
  • Примерите за променливи класове са StringBuffer, Java.util.Date, StringBuilder и др. Докато неизменните обекти са наследени класове, класове обвивки, клас String и т.н.

Разгледайте таблицата по-долу:

Променлив Неизменна
Можем да променим стойността на променливи обекти след инициализация. След като бъде иницииран неизменен обект; Не можем да променим стойностите му.
Състоянието може да се промени. Състоянието не може да се промени.
В променливите обекти не се образуват нови обекти. В неизменните обекти се формира нов обект, когато стойността на обекта се промени.
Той предоставя методи за промяна на обекта. Той не предоставя никакъв метод за промяна на стойността на обекта.
Той поддържа get() и set() методи за забавяне с обекта. Поддържа само метод get() за предаване на стойността на обекта.
Променливите класове могат или не могат да бъдат безопасни за нишки. Неизменните класове са безопасни за нишки.
Най-важното за създаването на променлив клас са методите за модифициране на полета, гетери и сетери. Основните неща за създаване на неизменен клас са финален клас, частни полета, крайни променливи обекти.

Защо низовете в Java са неизменни

String в Java е много специален клас, тъй като се използва в почти всяка програма на Java. Ето защо е неизменно за подобряване на производителността и сигурността. Нека го разберем подробно:

В Java низовете използват концепцията за литерали. Да предположим, че имаме обект с много референтни променливи. В такъв сценарий, ако променим стойността на референтна променлива, това ще засегне целия обект и всичките му стойности.

срез на java масив

Освен горните причини, следните причини също са отговорни за превръщането на низа в неизменен:

Неизменните обекти са много прости; няма нужда от синхронизация и по своята същност са безопасни за нишки. Но неизменните обекти са добри градивни елементи за други обекти, така че трябва да им осигурим специални грижи.

Повечето разработчици правят String крайния обект, така че да не може да бъде променен по-късно.

Заключение

Обсъдихме променливи и неизменни обекти в Java, сега имаме ясно разбиране както за променливи, така и за неизменни обекти и класове. Освен това видяхме как да създадем променлив и неизменен клас.

Отбелязва се, че неизменните обекти могат да бъдат променени на тяхната стойност и състояние, след като бъдат инициирани и могат или не могат да бъдат безопасни за нишки. Сравнително неизменните обекти не могат да бъдат променени до тяхното състояние и стойност и безопасни по подразбиране.