有关String的几个问题(结合JVM)

为什么String是不可变的?String的几种创建方式有什么不同?“+”拼接String的底层原理?String与StringBuilder与StringBuffer的区别?