java语言基础之String类常见功能详解

上次说到String类的一些特性和在内存中的情况。这篇文章主要从方法功能入手,讲一讲String类的应用,还有一些Stringbuffer和Stringbuilder的区别及应用。废话不多说,进入正题。

关于对数据的基本操作,无非就是:1.增添 2.删除 3.修改 4.查看 

1.查看:

1.1查看长度:int length()  //返回该字符串长度

1.2根据位置查看字符 char charAt (int index)  //参数是位置下标 (注意从零计数)

1.3根据字符查看位置 int indexOf (int ch )   //注意,这里的字符参数竟然是int类型,实际上他是该字符的ASCII码

     而且返回值是第一次出现该字符的位置。如果找不到,则返回-1.

1.4根据字符查看位置int indexOfint ch ,int fromindex) // 功能:从指定位置开始索引目标字符,并返回其位置。

     参数: ch 是被进行索引的目标字符, fromindex是指定的位置。如果找不到,则返回-1.

1.5 根据字符串查看位置int indexOf (String s) //功能:索引目标字符串,并返回其第一个匹配字符的位置。   若不存在该字符串,则返回-1. 

1.6根据字符串查看位置int indexOf (String s,  int fromindex) //功能:从指定位置开始索引目标字符串,并返回其第一个匹配字符的位置。   若不存在该字符串,则返回-1. 

1.7 ... int lastIndexOf(int ch , int fromindex )  ... int lastIndexOf (int ch) ... //  从字符串尾部倒着索引,功能和上述一致

1.8根据位置查看字符串  String subStringint begin , int end)//功能:根据起始位置和结束位置,从元字符串中提取子字符串,需要注意的是 end 表示不想提取字符的终点,所以end位置字符不会被提取。子串lenth = end - begin

2.修改

2.1将字符串转化为字符数组char[]  toCharArray ( String s )

2.2将字符串按需分割:  String[] split (String s);  以s为分割位,将字符串分割成string[]数组

2.3将字符串转换为大小写String toUpperCase()/大写...... String toLowerCase()/小写

2.4将字符串链接 String concat(String s)  //连接到末尾,

2.5将字符串内容替换String replaceString Olds , String News)//将所有Olds用News替换。同理参数可以换为char

2.6将字符串前后两端的空格去掉String trim()

StringBuffer 与 StringBuilder 及String 区别及应用:

放个大,直接上代码Demo

    
          String a = new String("hello");
         //length()方法
         System.out.println("长度:"+a.length());   长度:5
         //charAt(index)
         System.out.println("返回第四个元素:"+a.charAt(4));  返回第四个元素:o
         //boolean endWith(String other) 
         System.out.println("是否是以llo结尾:"+a.endsWith("llo")); 是否是以llo结尾:true
         //boolean equals(object other)...注意此处的参数类型是Object
         System.out.println("是否对象内容相同:"+a.equals("hello")); 是否对象内容相同:true
         //补充: equalsIgnoreCase(String other) 忽略大小写进行内容比较
         // int indexof(String this)
         System.out.println("返回ll的位置:"+a.indexOf("ll")); 返回ll的位置:2
         //String substring(int beginIndex,int endIndex),可以这样理解endIndex:最末端不想要的代码点,不要理解为终点
         System.out.println("返回从1到3的字符串:"+a.substring(1, 3)); 返回从1到3的字符串:el
         //String toUpperCase()...String toLowerCase()...转换大小写
         StringBuffer sb = new StringBuffer("hello"); 
         // StringBuffer append(char c)
         System.out.println("加上一个字符:"+sb.append(' ')); 加上一个字符:hello 
         // StringBuffer append(String other)
         System.out.println("加上一串字符串:"+sb.append(" world!")); 加上一串字符串:hello  world!
         //StringBuffer insert(int index, String other) 在某处前面插上某字符串
         System.out.println(sb.insert(0, "吊带:")); 吊带:hello  world!
         //String toString StringBuffer类型转换成String类型
         //"xxx"... new String("xxx")...  new StringBuffer("xxx").toString  三者地址比较
         System.out.println(("xxx")==new String("xxx"));  //False
         System.out.println("xxx"==new StringBuffer("xxx").toString()); //False
         System.out.println(new String("xxx")==new StringBuffer("xxx").toString()); //False
         System.out.println(new StringBuffer("xxx").toString()==new StringBuffer("xxx").toString()); //False

区别:StringBuffer是线程安全的,因为他的方法是含有synchronized同步关键字,但是安全的同时,会降低效率。

         显然啦,StringBuilder是不安全的,但是效率灰常高。

   <至于两者的深入区别,我还得继续研究一下,争取下次为他俩写一篇专门的API博客>

同志们,有补充的提醒我一下,互相帮助,共同进步啦啦啦~


猜你喜欢

转载自blog.csdn.net/weixin_42126680/article/details/80198784