为了账号安全,请及时绑定邮箱和手机立即绑定

java String

标签:
Java

String
常量池:虚拟机必须为每个被装载的类型维护一个常量池,就是该类型用到的常量的一个有序集合,包括直接常量和对其他类型,字段和方法的符号引用。
String常量和String对象
String str1="abc";  //可能会创建一个或者不创建对象,如果"abc"这个字符串在常量池中不存在,就会在常量池中创建一个Strin对象,然后将str1指向这个对象;如果在常量池中存在"abc",则将"abc"的地址指向str1。
String str2=new String("abc");  //至少会创建一个对象,也可能创建两个对象。因为用到了new关键字,肯定会在堆中创建一个str2的String对象,他的值是"abc"。同时如果这个字符串在常量池中不存在,则会在常量池中创建这个String对象"abc"。
String s1=new String("kill");   //在堆中创建s1对象,常量池中没有"kill",创建常量池对象"kill"
String s2="kill";
System.out.println(s1);
System.out.println(s2);
System.out.println(s1==s2);//false  常量池的对象kill和堆中的对象kill
System.out.println(s1.intern()==s2); //true 字符串驻留   s1.intern()返回在常量池中kill的引用,所以与常量池中的所相等。
String s="q";
String ss=new String("q");
String sss=new String("q");
System.out.println(s==ss);//false   常量池的对象kill和堆中的对象kill
ss.intern(); //ss获取常量池中对象引用
sss=sss.intern(); //sss获取常量池中对象引用,并赋值给sss
System.out.println(s==ss);//false   只是调用,并没有为ss对象进行赋值
System.out.println(s==ss.intern()); //true  
System.out.println(s==sss); //true
public native String intern();      //扩充常量池
//当一个String实例调用intern()方法时,程序会查找常量池中是否有相同Unicode的字符串常量,如果有,则返回常量池中该字符串的引用,如果没有,则在常量池中创建一个Unicode等于该实例的字符串并返回它的引用;
String s=new String(); 等效于 String s="";
String源码中无参构造器
public String(){
this.value="".value;        
}
具体操作字符串
获取字符串
获取字符串长度     public int length(){return value.length}
根据位置获取字符串   public char charAt(int index){if((index<0)||(index>=value.length)){throw new StringIndexOutOfBoundsException(index);}return value[index];}
根据字符获取位置    int indexOf(int ch) int lastIndexOf(int ch)
获取部分子串      String substring(int beginIndex,int endIndex)   //[)
转换字符串
将字符串变为字符串数组 String[] split(String regex){return split(regex,0)}
分割字符串           String[] split(String regex,int limit) //regex为字符串分割的标准,limit用来限制返回数组中元素的个数
将字符串变为字符数组      toCharArray()
将字符串变为字节数组      getBytes()  
将字符串的字母转换大小写    toUppercase()   toLowercase()
将字符串中的内容进行替换    String replace(char oldChar,char newChar)
将字符串两端去空格       trim()
将字符串进行连接        concat(String str)  
判断字符串
两个字符串内容是否相同     boolean equals(Object obj)
字符串中是否包含指定字符        boolean contains(String str)
字符串是否以指定字符开头,结尾
startsWith(String prefix){return startsWith(prefix);}
endsWith(String suffix){return startsWith(suffix,value.length-suffix.value.length);}
字符串中某一下标的值是否是指定字符串   boolean startsWith(String prefix,int index)//比较原字符串下标之后的字符串与指定字符串是否相同
比较字符串
compareTo(String anotherString);    //s.compareTo(ss); 比较s和ss的ASCll码的差值,
//compareTo(Object obj)方法是Comparable接口中的方法,当需要对类的对象进行排序时,该类需要实现Comparable接口,必须重写compareTo(T t)方法;String等类默认实现了该接口

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
64
获赞与收藏
367

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消