String类型其实是个很有意思的类,他拥有字符串池,而且还是引用型类型,而且在程序运行的时候其实有很多默认的调用方法.
我的理解:
1.字符串池中的字符串,String hello=“你好”;
这个方法会创建一个"你好"字符串在字符串池中,hello对象直接指向"你好".
2.使用new创建字符串,String hello=new String(“你好”);
这个方法,会在堆内存中放一个new String(“你好”);而hello会指向这个地址.
两个方法的最主要区别就在于一个是指向地址,一个是直接指向值的.
所有String调用的方法,如果产生了新的字符串,那么返回的字符串是new出来的字符串,所以返回的地址是一个新的,并且不会对传入的字符串进行修改.
一开始看起来根本看不懂,但是换个说法,就是String作为参数传递的时候,可以理解为传递的是值.跟基本类型一样.(这就是String最特殊的地方吧)