JAVA中针对,字符串的创建,修改,有着一种非常特殊的规定.下面就来看看:
一、String:
String并不是基本数据类型,而是一个被final修饰的不可变对象。通过查看JDK文档会发现几乎每一个修改String对象的操作,实际上都是创建了一个全新的String对象。
字符串为对象,那么在初始化之前,它的值为null,到这里就有必要提下null、””、new String()三者的区别。null 表示string还没有new,也就是说对象的引用还没有创建,也没有分配内存空间给他,而””、new String()则说明了已经new了,只不过内部为空,但是它创建了对象的引用,是已经分配内存空间的。打个比方:一个空玻璃杯,你不能说它里面什么都没有,因为里面有空气,当然也可以把它弄成真空,null与" "、new String()的区别就象真空与空气一样。
每当我们创建一个字符串对象时,首先就会检查字符串池中是否存在面值相等的字符串,如果有,则不再创建,直接放回字符串池中对该对象的引用,若没有则创建然后放入到字符串池中并且返回新建对象的引用。这个机制是非常有用的,因为可以提高效率,减少了内存空间的占用。所以在使用字符串的过程中,推荐使用直接赋值(即String s=”aa”),除非有必要才会新建一个String对象(即String s = new String(”aa”))。
1、字符串比较:
- ==:判断内容与地址是否相同。
- equals() :判断内容是否相同。
- equalsIgnoreCase():忽略大小写的情况下判断内容是否相同。
- compareTo() :判断字符串的大小关系。
- compareToIgnoreCase(String int) :在比较时忽略字母大小写。
- reagionMatches():对字符串中的部分内容是否相同进行比较。
2、字符串查找:
- charAt(int index):返回指定索引index位置上的字符,索引范围从0开始。
- indexOf(String str):从字符串开始检索str,并返回第一次出现的位置