package com.example.foo; import java.lang.reflect.Field; public class SomeClass { public static void main(final String[] args) throws Throwable { final String s = "Umesh"; changeString(s); } // We need a method so the compiler won't inline "s": static void changeString(final String s) throws Throwable { System.out.println("Original: " + s); final Field field = String.class.getDeclaredField("value"); field.setAccessible(true); final char[] value = (char[]) field.get(s); value[0] = 'X'; System.out.println("Changed: " + s); } }