2
两个构造器方法,看看就行
总结,就是string 指向的那个对象是final修饰的不可变.如果做了修改(拼接之类的),会指向一个新的对象;
String的对象的状态不可变;如果要修改状态就要指向新的对象
------------------------
"双引号"的字面值常量字符串,在编译时期就能确定它的最终状态;()
编译时期做了一个标记,标记是常量池的
随着内加载,jvm会把静态常量池中的字面值常量作为一个对象在运行时常量池(字符串常量池)创建;
(字符串常量池在堆上java8之后)
String设计为不可变并且使用常量池的目的:
为了共享,节约资源,安全们,并且在哈希表中带来了效率提升;(所以哈希表的key最常见string)
注:上文的常量池为静态常量池
字面值相加在编译时期其实也已经算好放到常量池里面了;
只要有变量,那么相加得到的一定会开辟空间的
---------
左闭右开是为了,左边从0开始,右边可以直接写数组的长度;
得到一个新的数组
comparetor 里面有一个compare抽象方法;
comparable里面是compareTo接口;
string里面是lang包的下的compareTo;