/**
* String,只读,多线程并发访问,没有问题
* 因为change(str)----并不能改变str
* 多线程并发访问,
* 不是指: 线程外String str = "123"-----线程中str="234"(没法这样做的),
* 而是指:线程外String str = "123"-----线程中Threadname.visit(String strlocal){strlocal="234"}这样访问,
* String,只读,多线程并发访问,没有问题
* 因为change(str)----并不能改变str
* 多线程并发访问,
* 不是指: 线程外String str = "123"-----线程中str="234"(没法这样做的),
* 而是指:线程外String str = "123"-----线程中Threadname.visit(String strlocal){strlocal="234"}这样访问,
* --注意:参数传递的只是地址,{strlocal="234"}改变的是局部变量strlocal,不是访问的str,str指向对象没变
*/
String是final修饰,实现了equals方法和hashCode方法。
StringBuffer是可以动态改变的,未实现了equals方法和hashCode方法(所以不能作为JAVA集合类的元素??还是仅仅不能作为需要计算hashCode的集合类的元素)。