Java基础之String与StringBuffer

来源:互联网 发布:php class 编辑:程序博客网 时间:2024/05/16 12:02

String

String 是一个表示字符串的类,Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。字符串是常量;它们的值在创建之后不能更改。如
String s1="abc";//s1是一个类类型变量、"abc"是一个对象。s1="abcd";//改变的是S1的指向String s2=new String ("abcd");System.out.println(s1==s2);//falseSystem.out.println(s1.equals(s2));//true
s1和s2有什么区别?
s1在内存中有一个对象,s2在内存中有两个对象
String常见的操作有哪些?
1、获取
              1.1 字符串中包含的字符数,也就是字符串的长度
  int length();获取长度
              1.2根据某个位置获取该位置上的字符
              char charAt(int index):
              1.3根据字符获取该字符在字符串中的位置
              int indexOf(int ch):返回的是ch在字符串中第一次出现的位置
              int indexOf(int ch, int fromIndex):从fromIndex指定位置开始,获取ch在字符串中第一次出现的位置
              int indexOf(String str):返回的是str在字符串中第一次出现的位置
              int indexOf(String str, int fromIndex):从fromIndex指定位置开始,获取str在字符串中第一次出现的位置
2、判断
              2.1字符串中是否包含某一个子串
              boolean contains(String str) 当且仅当此字符串包含指定的 char 值序列时,返回 true。 
              特殊之处indexOf()可以索引str第一次出现的位置如果不存在返回-1 也可以判断是否包含字符串
              2.2字符串中是否有内容
              boolean isEmpty() 当且仅当 length() 为 0 时返回 true。 
              2.3字符串是否是以指内容开头
              boolean startsWith(String prefix)  测试此字符串是否以指定的前缀开始。 
              2.4字符串是否是以指内容结尾
              boolean endsWith(String suffix)  测试此字符串是否以指定的后缀结束。 
              2.5判断字符串内容是否相同 复写的object中的方法
              boolean equals(Object anObject)
              2.6判断内容是否相同,忽略大小写
              boolean equalsIgnoreCase(String anotherString) 
3、转换
              3.1将字符数组转换成字符串
              构造函数:String(char[] value) 
              String(char[] value, int offset, int count) offset起始位置 count 字符个数
              静态方法:static String copyValueOf(char[] data)   返回指定数组中表示该字符序列的 String。 
              static String copyValueOf(char[] data, int offset, int count)  返回指定数组中表示该字符序列的 String。 
              static String valueOf()
              3.2将字符串转换成字符数组
              char[] toCharArray()  将此字符串转换为一个新的字符数组。 
              3.3将字节数组转换成字符串
              构造函数:String(byte[] value) 
              String(byte[] value, int offset, int count) offset起始位置 count 字符个数
              3.4将字符串转换成字节数组
              byte[] getBytes() 
              3.5将基本数据类型转换成字符串
              static String valueOf(int i)  返回 int 参数的字符串表示形式。 
              static String valueOf(double d) 返回 double 参数的字符串表示形式。 
4、替换
              String replace(char oldChar, char newChar)
              String replace(CharSequence target, CharSequence replacement) 
5、切割
              String[] split(String regex)  
6、字串、获取字符串中的一部分
              String substring(int beginIndex)  返回一个新的字符串,它是此字符串的一个子字符串。 
              String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。 
7、转换
              7.1将字符串转换成大写或小写
              String toUpperCase() 
              String toLowerCase()  
              7.2将字符串两端多个空格去除
               String trim()  
              7.3对两个字符串进行自然顺序的比较
              int compareTo(String anotherString) 
代码示例
public class StringDemo {public static void method_get(){String str="abcdefadc";//长度sop(str.length());//根据索引获取字符串sop(str.charAt(3));//当访问到字符串中不存在的角标时会发生StringIndexOutOfBoundsException//根据字符获取索引sop(str.indexOf('c'));sop(str.indexOf('a',3));//反向索引字符出现的位置sop(str.lastIndexOf('a'));}public static void method_is(){String str="ArrayDemo.java";sop(str.isEmpty());sop(str.contains("Demo"));sop(str.startsWith("A"));sop(str.endsWith(".java"));}public static void method_trans(){char [] ch={'f','d','f','e','t','h','s','g'};String str=new String(ch);str=new String(ch, 1, 3);sop(str);}public static void method_replace(){String str="Hello java";sop(str.replace("a", "n"));//如果要替换的字符串不存在 返回原串}public static void method_split(){String str="zhangsan,lisi,wangwu";String [] s1=str.split(",");sop(s1[0]);}public static void method_sub(){String str="zxcvbn";sop(str.substring(2));//从指定位置开始到结尾sop(str.substring(2, 4));//包含头不包含尾sop(str.trim());}public static void sop(Object obj){System.out.println(obj);}public static void main(String[] args) {//method_get();//method_is();//method_trans();//method_split();method_sub();}}

StringBuffer

StringBuffer 是一个字符串缓冲区
特点:
1、而且长度是可变的
2、可以直接操作多个数据类型
3、最终通过toString方法返回字符串
常见操作
1、存储
       StringBuffer append();将指定指定数据作为参数添加到已有数据的结尾处 
       StringBuffer insert(index, 数据);可以将数据插入到指定位置
2、删除
       StringBuffer delete(int start, int end):删除缓冲区中的数据,包含头不包含尾
       StringBuffer deleteCharAt(int index):删除指定位置的字符
3、获取
       char charAt(int index)  
       int indexOf(String str)  
       int lastIndexOf(String str) 
       int length()  
       String substring(int start) 
4、修改
       StringBuffer replace(int start, int end, String str)  
       void setCharAt(int index, char ch) 
5、反转
       StringBuffer reverse()  //反转
6、将缓冲区中的指定数据存到指定数组中
       void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

代码示例
public class StringBufferDemo {public static void main(String[] args) {//创建一个字符缓冲区StringBuffer sb=new StringBuffer();sb.append("abc").append(77).append(true);//方法调用链//StringBuffer sb1=sb.append(34);System.out.println("sb:"+sb.toString());sb.insert(1, "kk");System.out.println("sb:"+sb.toString());sb.delete(2,4);sb.deleteCharAt(2);sb.replace(0, 1, "java");//清空缓冲区//sb.delete(0, sb.length());//System.out.println(sb==sb1);System.out.println("sb:"+sb.toString());//System.out.println(sb1.toString());}}
StringBuffer与StringBuilder的区别
在jdk1.5版本之后出现了StringBuilder 但是
StringBuffer是线程同步,效率低
StringBuilder是线程不同步,效率高
以后开发建议使用StringBuilder

原创粉丝点击