You can't do this in Java. All you're doing is fetching the value from the ArrayList. That value is a reference, but it's a reference in Java terminology, which isn't quite the same as in C++.
That reference value is copied to s1, which is thereafter completely independent of the value in the ArrayList. When you change the value of s1 to refer to a new string in this line:
s1 += "modificated";
that doesn't change the value in the ArrayList at all.
Now if you were using a mutable type such as StringBuilder, you could use:
StringBuilder builder = list.get(0);
builder.append("more text");
System.out.println(list.get(0)); // Would include "more text"
Here you're not changing the value in the ArrayList - which is still just a reference - but you're changing the data within the object that the value refers to.