1、JavaScript常用对象和类一.Java String对象(拆分字符串(53页) 1.String、StringBuffer、StringBuilder的区别 (1).执行速度:StringStringBufferStringBuilder 原因:String类开辟的内存空间是不可收缩/改变的(它是字符串常量不可改变的,对其操作时其实它是不断的创建新对象),所以String对象拼接字符串时其实是抛弃原来的空间 重新开辟两块空间再拼接(即:以要拼接的两个字符串重新创建两个String对象和一个临时的StringBuffer对象后调用append方法拼接,再将临时的StringBuffer对象
2、转为 String(此过程中创建了四个对象,加大了系统开销).而StringBuffer开辟的内存空间是可变/收缩的,当改变其内容时直接操作原对象(直接往原内存空间改变/插入值即 可),且StringBuffer是线程安全的(多个线程同时操作该对象时,必须是前一个线程执行完才让下一个线程执行).而StringBuilder是线程非安全的(多个线程同时操作该对 象时如果前一个线程未执行完就发现有第二个线程则立刻执行第二个线程,故引起其数据不安全,但效率比StringBuffer更快) (2).操作数据: .String操作少量数据 .StringBuffer多线程下操作大量数据 .StringB
3、uilder单线程下操作大量数据 (3).使用场合: String用来表示创建后就不会再改变的字符串 StringBuffer用来表示内容可变的字符串,并提供了修改底层字符串的方法 2.String和StringUtils的用法,StringUtils类来自mons.lang.StringUtils,是对String的操作补充,其中的方法全都是static型的,所以直接StringUtils.methodName()即可调用 (1).字符串拆分、合并 split(String 指定字符串/分割符); /从指定字符串/分割符所在的每个索引处将当前字符串拆分成字符数组 或 将当前字符串中每个指定字
4、符串/分割符前的字符串拆分成字符串数组,返回String split(String 指定字符串/分割符, int arraySize); /从指定字符串/分割符所在的每个索引处将当前字符串拆分成指定数组大小(arraySize)的字符串数组(限制拆分后的字符串数组的大小为arraySize),String 注:.分隔符为./|/*/+/等特殊字符时需转义 .如果被分割的字符串中有多个分隔符时可以用|连接每个分隔符(如:String str=Java string-split#test,可以用Str.split( |-|#)把每个字符串分开 toCharArray(); /将当前字符串拆分成新的
5、字符数组,返回char StringUtils的方法: join(Object array); /把数组中的元素连接成一个字符串,返回String join(Object array,char separator); /用指定的分隔符(separator)将数组中的元素拼接成字符串,返回String join(Object array,char separator,int startIndex,int endIndex); /用指定的分隔符(separator)将数组中从startIndex到endIndex的元素连接成字符串,返回String repeat(String 原字符串,int n
6、); /将n个原字符串拼接成新字符串,返回String (2).字符串格式化:String.format(%02d,8); /左对其且以0不足位数 static String format(String 格式字符串/最终输出格式, Object 被格式化的变量(对象/字符串/整数.)列表(可以是多个参数); /将当前参数格式化为指定的格式字符串所 表示的格式,格式字符串的写法为:注:格式字符串中的转义序列不是而是%,格式字符串后可跟任意长度的任意字符串,但是其后跟的字符串将原样输出 整数类型:%+argumentIndex$(可选项,表示要格式化第几个参数或被格式化的参数在参数列表中的索引/位
7、置,缺省值/默认值为第一个) +flags(可选项,表示格式化后的数据 格式/最终输出格式,其值为以下几种,并可同时取多个: -:在最小宽度内左对齐,不能与0一起使用; 0:用零补足位数/填充; (:若参数是负数结果中不添加负号而是用圆括号把数字括起来,只适用于10进制,若对象为BigInteger才可以用于8/16进制; +:结果总是包括一个符号,只适用于10进制,若对象为BigInteger才可以用于8/16进制; 空格:正值前加空格,负值前加负号,只适用于10进制,若对象为BigInteger才可以用于8/16进制; ,:每3位数字之间用,分隔,只适用于10进制; #:只适用于8/16进
8、制,8进制时在结果前加个0,16进制时在结果前加0x) +width(转化后的字符串的位数) +conversion(格式化后结果的表示形式/将被格式化的参 数格式化为指定的数据类型的String表示形式(只是表示形式为指定的数据类型形式,最终的类型还是String型),d:十进制数,o:八进制数,x/X:十六进制数) 浮点数型:%+argumentIndex$(可选项,表示要格式化第几个参数或被格式化的参数在参数列表中的索引/位置,缺省值/默认值为第一个) +flags(可选项,表示格式化后的数据 格式/最终输出格式其值为以下几种,并可同时取多个: -:在最小宽度内左对齐,不能与0一起使用;
9、 0:用零补足位数/填充; (:若参数是负数结果中不添加负号而是用圆括号把数字括起来,只适用于eEfgG的转换; +:结果总是包括一个符号; 空格:正值前加空格,负值前加负号; ,:每3位数字之间用,分隔,只适用于fgG的转换) +width(转化后的字符串的位数) +.+precision(小数点后的位数) +conversion(格式化后结果的表示形式/将被 格式化的参数格式化为指定的数据类型的String表示形式(只是表示形式为指定的数据类型形式,最终的类型还是String型),e/E:用计算机科学记数法表示的十进制 数,f:十进制普通表示方式,g/G:根据具体情况自动选择用普通表示方式
10、还是科学计数法方式,a/A:带有效位数和指数的十六进制浮点数) 字符串型:%+argumentIndex$(可选项,表示要格式化第几个参数或被格式化的参数在参数列表中的索引/位置,缺省值/默认值为第一个) +flags(可选项,表示格式化后的数据 格式/最终输出格式,其值为-:左对齐) +width(转化后的字符串的位数) +conversion(格式化后结果的表示形式/将被格式化的参数格式化为指定的数据类型的Str ing表示形式(只是表示形式为指定的数据类型形式,最终的类型还是String型),s:字符串类型,c:字符型) 日期类型:%+argumentIndex$(可选项,表示要格式化第
11、几个参数或被格式化的参数在参数列表中的索引/位置,缺省值/默认值为第一个) +flags(可选项,表示是日期和时间的 转换,用t/T表示) +width(转化后的字符串的位数,一般不用) +conversion(其值为以下几种: 用于转换日期: Y:年份的全称(如2011); y:年份的简称(如11); C:除以100的四位数表示的年份(如00-99); B:月份的全称(如January); b:月份的简称(如Jan); h:与b相同; m:前导零的月份; A:星期的全称(如Sunday); a:星期的简称(如Sun); j:一年中的天数(前导零,如058); d:一月中的天数(前导零,如02
12、); e;一月中的天数(不前导零,如2); 用于转换时间: H:24小时制的小时(前导零,如00-23); I:12小时制的小时(前导零,如01-12); k:24小时制的小时(不前导零,如0-23); l:12小时制的小时(不前导零,如1-12); M:小时中的分钟(前导零,如00-59); S:分钟中的秒(前导零,如00-60); L:秒中的毫秒(前导零,如000-999); N:秒中的毫微秒(前导零000000000-999999999); p:上午(am)/下午(pm); s:自协调世界时(1970年1月1日00:00:00至现在所经过的秒数); Q:自协调世界时(1970年1月1日0
13、0:00:00至现在所经过的毫秒数); 用于转换日期和时间的组合: R:24小时制的时间,%tH:%tM; T:24小时制的时间,%tH:%tM:%tS; r:12小时制的时间,%tI:%tM:%tS %Tp,上午/下午标记(%Tp)的位置) 常见异常: java.util.IllegalFormatConversionException: %!=java.lang.%:被格式化的参数类型与规则转换类型不对应 java.util.FormatFlagsConversionMismatchException: Conversion=%,Flags=%:flag不适用于规则转换类型 StringU
14、tils的方法: rightPad(String 原字符串,int size,String padStr); /将原字符串以padChar字符串在右边补足size位,返回String leftPad(String 原字符串,int size,String padStr); /将原字符串以padChar字符串在左边补足size位,返回String center(String 原字符串,int size,String padStr); /将原字符串以padChar字符串在两边补足size位,返回String (3).获取字符串所在的索引/是否存在 indexOf(String string); /
15、获取指定字符串在当前字符串中第一次出现处的索引,返回int indexOf(String string, int stratIndex); /从指定索引处开始搜索/获取指定字符串在当前字符串中第一次出现的索引,返回int lastIndexOf(String string); /获取指定字符串在当前字符串中最后出现处的索引,返回int lastIndexOf(String string, int startIndex); /获取指定字符串在当前字符串中从0到指定索引之间最后出现处的索引(指定索引后的字符串不进行搜索/获取),返回int StringUtils的方法: ordinalIndexO
16、f(String 原字符串,String 要查找的字符串, int ordinal); /返回要查找的字符串在原字符串中第ordinal次出现的索引,返回int countMatches(String 原字符串,String 要查找的字符串); /获取要查找的字符串在原字符串中出现的次数,返回int (4).判断字符串是否包含/存在 contains(CharSequence s); /判断当前字符串是否包含指定字符串,返回bool startsWith(String prefix); /判断当前字符串是否以指定的字符串开始,返回bool startsWith(String prefix, i
17、nt toffset); /判断当前字符串中从指定索引开始处是否以指定的字符串开始,返回bool endsWith(String suffix); /判断当前字符串是否以指定的字符串结尾,返回bool (5).字符串替换 replace(char/String 当前字符串中指定要替换的字符, char/String 要替换后的新字符); /将当前字符串中所有和指定字符相同的字符替换为指定的新字符,返回String replaceAll(String 当前字符串中指定要替换的字符, String 要替换后的新字符); /将当前字符串中所有和指定字符相同的字符替换为指定的新字符,可以实现字符串的删
18、除功能,返回String replaceFirst(String regex, String replacement); /将当前字符串中和指定字符相同的第一个字符替换为指定的新字符,返回String 注:replace和replaceAll的区别:都是全部替换,replace的参数是一般的字符/字符串,replaceAll的参数可以是规则表达式(如:replaceAll(d,丁),replaceAll所用的参 数为一般字符/字符串时与replace的效果一样 StringUtils的方法: replace(String 原字符串,String 要替换的字符串,String 替换后的字符串,i
19、nt n); /将原字符串中的n个要替换的字符串替换为替换后的字符串,返回String overlay(String 原字符串,String 替换后的字符串,int start,int end); /将原字符串中从start到end之间的字符串替换为替换后的字符串,返回String (6).字符串截取 substring(int beginIndex, int endIndex); /获取当前字符串中从开始索引处到结束索引处的字符串,返回String substring(int beginIndex); /获取当前字符串中从开始索引处到结尾处的字符串,返回String (7).大小写转换 to
20、UpperCase(); /将当前字符串中的所有字符转为大写,返回String toLowerCase(); /将当前字符串中的所有字符转为小写,返回String (8).字符串的判断/比较: equals(String param); /判断当前字符串与指定字符串的内容是否相等,返回bool equalsIgnoreCase(String string); /判断当前字符串与指定字符串的内容是否相等(忽略大小写的比较),返回bool contentEquals(StringBuffer sb); /将当前字符串与指定的StringBuffer比较,返回bool matches(String
21、string); /判断当前字符串与指定字符串是否相等,返回bool compareTo(String string); /判断字符串的大小关系(依次比较两个字符串中每个字符的ascii码值的大小,直到遇到不相等的两个字符就直接返回不相等的两个字符的ascii码值的差值,不再比较后面的字符),返回int compareToIgnoreCase(String string); /判断字符串的大小关系(依次比较两个字符串中每个字符的ascii码值的大小(忽略大小写的比较),直到遇到不相等的两个字符就直接返回不相等的两个字符的ascii码值的差值,不再比较后面的字符),返回int contentEq
22、uals(String cs); /将当前字符串与指定的CharSequence比较,返回bool StringUtils的方法:不抛出异常 isEmpty(String str); /判断字符串是否为null或空字符(判断标准为str=null/或str.length()=0),返回bool isBlank(String str); /判断字符串是否为null或空字符(判断标准为str=null/ 或str.length()=0),返回bool (9).获取指定索引处的字符 charAt(int index); /获取指定索引处的char型字符,返回char codePointAt(int
23、index); /获取指定索引处的字符的ascii码,返回int codePointBefore(int index); /获取指定索引之前的字符的ascii码,返回int codePointCount(int beginIndex, int endIndex); /获取当前字符串中从开始索引处到结束索引之间的Unicode代码点数,返回int (10).字符串删除:StringUtils的方法 deleteWhitespace(String str); /删除字符串中的所有空字符,返回String strip(String 原字符串,String 指定的字符串); /去掉原字符串两端的指定的
24、字符串,返回String remove(String 原字符串,String 指定的字符串); /去掉原字符串两端的指定的字符串,返回String stripStart(String 原字符串,String 指定的字符串); /去掉原字符串前端的指定的字符串,返回String removeStart(String 原字符串,String 指定的字符串); /去掉原字符串前端的指定的字符串,返回String stripEnd(String 原字符串,String 指定的字符串); /去掉原字符串末端的指定的字符串,返回String removeEnd(String 原字符串,String 指定的
25、字符串); /去掉原字符串末端的指定的字符串,返回String stripAll(String strs); /对字符串数组中的每个字符串进行strip(String str)操作,返回String stripAll(String strs,String 指定的字符串); /对字符串数组中的每个字符串进行strip(String 原字符串,String 指定的字符串)操作,返回String (11).其它常用操作 static String valueOf(任意类型参数); /获取指定参数的字符串表示形式 String trim(); /将当前字符串前后的所有空白去除 int length()
26、; /获取当前字符串的长度 String concat(String str); /将指定字符串拼接到当前字符串的结尾 void getChars(int srcBegin, int srcEnd, char dst, int dstBegin); /将字符从当前字符串复制到目标字符数组 static String copyValueOf(char data); /获取指定数组中表示该字符序列的String static String copyValueOf(char data, int offset, int count); /获取指定数组中表示该字符序列的String byte getBy
27、tes(); /使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 byte getBytes(Charset charset); /使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。 byte getBytes(String charsetName); /用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中 int hashCode(); /获取当前字符串的哈希码 String intern(); /获取字符串的规范化表示形式 int
28、 offsetByCodePoints(int index, int codePointOffset); /获取当前字符串中从指定索引处处偏移codePointOffset个代码点的索引 boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len); /判断两个字符串区域是否相等 boolean regionMatches(int toffset, String other, int ooffset, int len); /判断两个字符串区域是否相等 3.StringBuff
29、er的用法: (1).字符串追加/拼接: append(Object 指定参数对象); /将指定参数对象追加/拼接到原字符串对象后面,返回StringBuffer insert(int 指定索引,Object 指定对象); /将指定对象插入到指定索引处 (2).字符串删除: delete(int 开始索引,int 结束索引); /将当前字符串中从(包含)开始索引到(不包含)结束索引的子字符串删除 deleteCharAt(int 指定索引); /将当前字符串中指定索引处的字符删除,注:如果指定索引处的字符是增补字符,该方法将不会移除整个字符,如果需要准确处理增补字符,可通过Character.
30、charCount(thisSequence.codePointAt(index) (3).字符串替换: replace(int 开始索引,int 结束索引,String 指定字符串); /将当前字符串中从(包含)开始索引到(不包含)结束索引的子字符串替换为指定字符串 setCharAt(int 指定索引,char 指定字符); /用指定字符替换指定索引处的字符 (4).字符串截取/获取: substring(int 开始索引,int 结束索引); /获取当前字符串中从开始索引到结束索引处的字符串,返回String charAt(int 指定索引); /获取指定索引处的字符,返回 (3).长度
31、获取: length(); /获取StringBuffer字符串对象长度,返回int capacity(); /获取StringBuffer对象的可分配空间长度/容量,返回int (4).其它方法: toString(); /将StringBuffer对象转换为String对象,返回String reverse(); /反转当前字符串,对当前的StringBuffer对象不影响,返回String ensureCapacity(int capacity); /设置缓冲区容量大小,返回void setLength(int len); /设置缓冲区长度,返回void trimToSize(); /将StringBuffer对象中的存储空间缩小
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1