I'm trying to learn Kotlin by reading its documentation. in the documentation there is a section about string. in that section it says:

> 
> Strings are immutable. Once you initialize a string, you can't change
> its value or assign a new value to it. All operations that transform
> strings return their results in a new String object, leaving the
> original string unchanged.
> 
> 
> 

and tries to show that with an example:

```
fun main() {
    val str = "abcd"
    println(str.uppercase()) // Create and print a new String object
    println(str) // the original string remains the same
}

```

I have a problem with the part that says:

> 
> the value of strings can't change after initializing.
> 
> 
> 

but when I change the `val` to `var` I easily can change the value of the string.

so what the documentation means by saying the value of string can't be changed? we know that `val` makes variables immutable, not just for strings.