Day17
1.字符串
面试题:==和equals的区别
- ==是用来比较地址是否一样
- equals是比较两个对象是否相等(比较的是内容:属性值)
**** 注意:字符串内容,如果直接使用""来赋值,首先就会取到一个叫做常量池的地方找,是否以及有该内容了,如果有,直接引用过来,如果没有,会在常量池中创建一个新的字符串
**** java8以前,常量池是放在堆中的,java8以后是存放在方法区中的
javaAPI:java的类库(就是别人写好的类,并且有很多方法,供开发者使用)
2.字符串中常用的一些方法:
- length():获取字符串长度
- char charAt(int index):返回指定索引(index)位置上的单个字符
- int indexOf(String str):返回str在目标字符串中第一次出现的位置,如果没有找到则会返回-1;
- int indexOf(String str,int fromIndex):返回str在目标字符串中,从fromInex索引位置开始,第一次出现的位置
- int lastIndexOf(String str):返回str在目标字符串中,最后一次出现的位置,如果没有找到则会返回-1;
- String [] split(String str):根据str内容在目标字符串中进行拆分,拆分后会返回字符串数组
- boolean startsWith(String str):判断目标字符串是否是以str内容开头的
- boolean endsWith(String str):判断目标字符串是否以str内容结尾的
- String substring(int start,int end):对字符串进行截取,从start位置开始,到end位置结束
- String substring(int start):对start位置开始截取,一直截取到末尾
- String toLowerCase():将目标字符串全部转换成小写
- String toUpperCase():将目标字符串全部转换成大写
- String trim():去掉目标字符串两边的空格
- String valueOf(Object obj):静态方法,将obj对象转换成String
面试题:length和length()的区别?
- length是获取数组长度的属性
- length()是获取字符串长度的方法
3.String,StringBuilder,StringBuffer
面试题:String,StringBuilder,StringBuffer的区别
- Stirng维护的是一个不可变的字符串对象
- StirngBuilder,StringBuffer维护的是可变的字符串对象
- StringBuilder:是非线程安全的,操作效率高
- StringBuffer:线程安全的,操作效率低
String创建出来的字符串,内容如果被改变,会生成新的字符串对象,那如果需要频繁的对某个字符串进行操作,就会生成很多废弃对象,这样子会影响系统性能
StringBuilder和StringBuffer维护的是可变的字符串,意思就是可以在原来的字符串基础上对字符串进行操作,而不是生成新的字符串对象
StringBuilder和StringBuffer中常用的方法:
- reverse():字符串的反转
- insert(int index,String str):往目标字符串的指定索引位置index插入str内容
- append(String str):往目标字符串的末尾追加str内容