java基础要点:[3]字符串
1)indexOf(""):返回字符串中某字符的下标
2)subString(1,3);//取字串 包前不包后
3)trim():去掉字符串前后的空白
4)subString(,uri.index("/",""));截取从哪儿到哪儿中间部分
5)indexof(,,):从A开始包括,截取长度,到哪个字符
6)endWith(“”):以什么为结尾的
7)startWith(""):
8)在java虚拟机中存在一个字符串池,保存着许多String对象,字符串池由String
类维护,可调用initem()访问字符串池,java虚拟机在字符串池中查找是否存在
一个值abc的对象,判断依据是String类equal(Object obj)方法的返回值,如果有
不创建,返回已存在对象的引用;
jvm在启动时会分配9个池空间,8种基本类型包装类+字符串常量池
String s1="abc"; 1个入池
String s2="abc"; 0个 池中已有一个
String s3=new String("abc") 创建一个堆区
String s4=new String("abc") 创建一个堆区
String s5="abc"+"d" abcd 1个入池
String s6=s1+"d" 当出现变量时, 单独入池, “d”入池 2个
String str=new String("abc"+"def") 2个
String str=new String(s1+"def") 3个 s1def堆 def
9)静态字符串
在java编译期间,凡是字面量和常量的运算,都会先运算出结果
当字符串池中有String对象时,java会直接用,如果没有才创建
String=char[]+操作(复制创建新对象)
StringBuilder=char+对char操作(处理当前数组内容),变长字符序列
StringBuilder内部的char[]数组内容可变,如果长度不够
利用变长算法维护,自动扩容
append():表示追加,但方法反复操作的同一个对象
insert()和delete()表示插入和删除
StringBuffer()线程安全的可变字符序列
String s=s1+s2;相等于
String s=new StringBuilder(s1).apend(s2).toString()
StringBuffer()是早期提供的(jdk1.0),速度稍慢,线程安全
StringBuilder()是java5以后提供的(jdk5.0),速度快,非线程安全
(共篇)上一篇:移位运算|下一篇: