Mutable vs Immutable Data
- Mutable data is data that can change during the running of the program.
- Immutable data is data that cannot change during the running of the program.
Mutable Data
Some examples of mutable data:
- Your password for your favorite app
- Your screen name for an online social media site
- Your Instagram "What's on your mind?"
- Your phone number
Immutable Data
Now, let's discuss immutable data. There are times we would not want data to change during the running of a program. When data that isn't supposed to change is stored in an immutable data type, it makes the data safer.
Some examples of immutable data:
- A physical address. This is different from an address that has been assigned to a person. A person can change their address, but that address will still exist. It will likely become someone else's new address. But the physical location will not change.
- A vehicle's VIN number, make, model, year it was built. Some data about a vehicle that would be mutable: how much gas is in the gas tank, the number of miles on the car, the owner of the vehicle, the license plate.
- The data stored in a database, for example, one that stores the data meteorite landing. It included the name of the meteorites, the date, the mass, the geolocation of the landing. None of this data can change during the analysis of the data.
Immutable String Objects
There are classes where the data is immutable. For example, the String
class. When you create a String
, it is immutable. Once we start working with String
data more we will see that we are unable to change the value of a String
object. We can assign a String
variable to a new String
that is an adapation of the original value.
For example, consider a database of students with information about a student: their name, address, parent contact information, course history, and grades. For this example, let's say that the name
variable holds the student's first and last name. Consider this example:
String name = "Jane Johnson";
If this student would need their name changed to something else, there is no way to modify the current value "Jane Johnson"
to be this new value. We would need to assign name
this new value. For example, maybe the student has decided to include their middle name as well, they would need to assign name
the new value, such as:
String name = "Jane Java Johnson";
As a teacher, perhaps you want to print name tags with just the student's first name. Since String
data is immutable, we are not able to modify "Jane Johnson"
to be "Jane"
. We will be able to access a part of a String
object; however in doing so, we create a new String
value that is that part of the String
. We would then assign this value to the varaible.
Resources
Next Learn Tutorial
Learn: Introduction to Records