Java中的String类提供了大量的方法,非常多,非常杂,通过API总结如下,API版为为Java1.6。
1、String类的主要特点:
· String类的对象有两种实例化方式:
|- 直接赋值:只会开辟一块堆内存空间,并且这个字符串的内容会自动入池;
|- 通过构造方法:会开辟两块堆内存空间,同时会产生一个垃圾,并且这个字符串的内容不会自动入池,可以使用intern()方法让其手工入池;
· String的比较方式有两种:
|- “==”:比较的是两个字符串对象的堆内存的地址数值,属于数值比较;
|- “equals()”:比较的是两个字符串的内容,属于内容比较;
· 每一个字符串的常量都表示一个String类的匿名对象,所以字符串的内容一旦声明则不可改变;
2、String类的主要方法:
· 字符与字符串:
|- 【构造方法】将全部字符数组变为字符串:public String(char [] data);
|- 【构造方法】将指定范围的字符数组变为字符串:public String(char [] data , int offset ,int count);
|- 【普通方法】返回指定索引位置的内容:public char charAt(int ind);
|- 【普通方法】将字符串变为字符数组:public char[] toCharArray();
· 字节与字符串:
|- 【构造方法】将字节数组变为字符串:public String(byte [] data);
|- 【构造方法】将指定范围的字节数组变为字符串:public String(byte [] data, int offset , int length);
|- 【普通方法】将字符串变为字节数组:public byte[] getBytes();
· 字符串的比较:
|-【普通方法】区分大小写的比较:public boolean equals(String str);
|- 【普通方法】不区分大小写的比较:public boolean equalsIgnoreCase(String str);
|- 【普通方法】比较两个字符串的大小:public int compareTo(String otherString);
· 查找字符串:
|- 【普通方法】判断一个子字符串是否存在:public boolean contains(String str);
|- 【普通方法】从头查找指定字符串的位置:public int indexOf(String str);
|- 【普通方法】从头开始的指定位置查找字符串的位置:public int indexOf(String str,int offset);
|- 【普通方法】从后向前查找指定字符串的位置:public int lastIndexOf(String str);
|- 【普通方法】从指定位置由后向前查找:public int lastIndexOf(String str,int offset);
|- 【普通方法】是否以指定的字符串开头:public boolean startsWith(String str);
|- 【普通方法】是否以指定的字符串结尾:public boolean endsWith(String str);
· 字符串替换:
|- 【普通方法】替换所有的子字符串:public String replaceAll(StringoldStr,String newStr);
|- 【普通方法】替换首个字符串:public String replaceFirst(String oldStr,String newStr);
· 字符串截取:
|- 【普通方法】从指定位置截取到结尾:public String substring(int index);
|- 【普通方法】截取部分字符串:public String substring(int index , int count);
· 字符串拆分:
|- 【普通方法】全部拆分:public String [] split(String regex);
|- 【普通方法】拆分为指定的个数:public String[] split(String regex,int size);
· 其他方法:
|- 【普通方法】连接两个字符串:public String concat(String str);
|- 【普通方法】去掉左右空格:public String trim();
|- 【普通方法】取得字符串的长度:public int length();
|- 【普通方法】转大写:public String toUpperCase();
|- 【普通方法】转小写:public String toLowerCase();
|- 【普通方法】判断空字符串:public boolean isEmpty();
3、String类的与基本数据类型的转换方法:
1、其他数据类型转换成字符串:
·将布尔类型转换成字符串:publicstaticStringvalueOf(boolean b);
·将字符型转换成字符串 :publicstaticStringvalueOf(char c);
·将int型数据转换成字符串:publicstaticStringvalueOf(int i);
·将long型数据转换成字符串:publicstatic String valueOf(long l) ;
·将float型数据转换成字符串:public static StringvalueOf(float f);
·将double型数据转换成字符串:public static StringvalueOf(double d);
·将Date类型转换成字符串:
Stringstr = new SimpleDateFormat((“yyyy-MM-dd HH:mm:ss.SSS”)).format(new Date()) ;
·将Object变成字符串:public String toString();
还可以使用 ”” + 连接的形式来转换,但是不常用,开发中一般都使用上述方法.
2、字符串转换成其他数据类型:
·将字符串转换成int型数据:
Integer包装类的方法:public static int parseInt(String s)throwsNumberFormatException
·将字符串转换成long型数据:
Long包装类的方法:public static long parseLong(String s)throwsNumberFormatException
·将字符串转换成byte数据:
Byte包装类的方法:public static byte parseByte(String s)throwsNumberFormatException
·将字符串装成double型数据:
Double包装类的方法public static double parseDouble(String s)throwsNumberFormatException
·将字符串转换成float型数据:
Float包装类的方法:public static float parseFloat(String s)hrowsNumberFormatException
·将字符串转换成short型数据:
Short包装类的方法:public static short parseShort(String s)throwsNumberFormatException
·将字符串转换成char型号数据:
String 类中的方法:public char[] toCharArray();
·字符串转换成Date型数据:
String str = “2012-04-16 21:15:37.122” ;
Date date = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss.SSS”).parse(str) ;
·字符串变成Object:Object obj = 字符串 ;
注意:在转换成数值型数据必须保证字符串是由数字组成的,转型前用正则判定下。
4、String类对正则的支持:
在JDK 1.4之后,String类也发生了一些主要的改变,增加了若干个支持正则表达式的操作方法,这些方法如下:
No. | 方法名称 | 类型 | 描述 |
1 | public boolean matches(String regex) | 普通 | 进行指定的正则符号匹配 |
2 | public String replaceAll(String regex, String replacement) | 普通 | 替换全部 |
3 | public String replaceFirst(String regex, String replacement) | 普通 | 替换首个 |
4 | public String[] split(String regex) | 普通 | 字符串拆分 |
5 | public String[] split(String regex, int limit) | 普通 | 字符串拆分 |
5、正则符号:
1、 表示单个字符(一位)
· a:表示的是一个字符a;
· \\:匹配的是转移字符“\”;
· \n:匹配的是换行;
· \t:匹配的是制表符;
2、 表示字符集(一位)
· [abc]:是a、b、c中的任意一个;
· [^abc]:不是a、b、c中的任意一个;
· [a-zA-Z]:表示所有的字母,不区分大小写,只是表示一位;
· [0-9]:表示数字;
3、 简化表达式(一位)
· .:表示任意的一位字符;
· \d:表示数字,等价于[0-9];
· \D:表示的是非数字,等价于[^0-9];
· \s:表示的是空格(\t、\n等);
· \S:表示的是非空格;
· \w:表示的是字母、数字_,等价于:[a-zA-Z0-9_];
· \W:表示的是非字母、数字_,等价于:[^a-zA-Z0-9_];
4、 边界匹配符(对Java无效,JavaScript中使用)
· ^:表示一组正则符号的开始;
· $:表示一组正则符号的结束;
5、 数量匹配,以上的所有符号默认情况下只能表示一个字符,如果要表示多位,则只能利用数量表达式
· 表达式?:表示此表达式出现0次或1次,例如[a-z]?,则表示要么没有字母,要么只出现一位;
· 表达式*:表示此表达式出现0次、1次或多次;
· 表达式+:表示此表达式出现1次或多次;
· 表达式{n}:表示正好出现n次;
· 表达式{n,}:表示出现n次以上;
· 表达式{n,m}:表示出现n~m次;
6、 逻辑表达式
· 表达式1表达式2:表示与的关系,一个表达式之后紧跟着另外一个表达式;
· 表达式1 | 表达式2:表示两个表达式任选一个;
· ():表示一组表达式;