java之String v_1.0.1

来源:互联网 发布:天涯明月刀心法数据 编辑:程序博客网 时间:2024/06/05 15:43

String API

一、构造方法

1.构造方法之byte[]

String(byte[] bytes)
通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。
String(byte[] bytes, Charset charset)
通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。
String(byte[] bytes, int offset, int length)
通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。
String(byte[] bytes, int offset, int length, String charsetName)
通过使用指定的字符集解码指定的 byte 子数组,构造一个新的 String

    @Test    public void testString() throws UnsupportedEncodingException {        byte[] bytes = {97,98,99,100,101,102};        System.out.println("String(byte[] bytes) -- " +new String(bytes));        //String(byte[] bytes) -- abcdef        System.out.println("String(byte[] bytes,String charsetName) -- " +new String(bytes,"UTF8"));//会抛出异常        //String(byte[] bytes,String charsetName) -- abcdef        System.out.println("String(byte[] bytes,int offset,int length) -- " +new String(bytes,2,4));        //String(byte[] bytes,int offset,int length) -- cdef        System.out.println("String(byte[] bytes,int offset,int length,String charsetName) -- " +new String(bytes,2,4,"utf8"));//注意长度,可能会出现数组下标越界异常        //String(byte[] bytes,int offset,int length,String charsetName) -- cdef    }

2.构造方法之char[]

String(char[] value)
分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。
String(char[] value, int offset, int count)
分配一个新的 String,它包含取自字符数组参数一个子数组的字符。

    @Test    public void testString1() {        char[] chars = {'A','B','C','D','E'};        System.out.println("String(char[] chars) -- " + new String(chars));        //String(char[] chars) -- ABCDE        System.out.println("String(char[] chars, int offset, int count) -- " + new String(chars,2,3));//注意长度,可能会出现数组下标越界异常        //String(char[] chars, int offset, int count) -- CDE    }

3.构造方法之int[]

String(int[] codePoints, int offset, int count)
分配一个新的 String,它包含 Unicode 代码点数组参数一个子数组的字符。

    @Test    public void testSting2() {        int[] codePoints = {20000,20001,20002,20003,20004,20005};//要注意范围,可能出现参数非法异常        System.out.println("String(int[] codePoints,int offset,int count) -- " + new String(codePoints,3,3));        //String(int[] codePoints,int offset,int count) -- 丣两严    }

4.构造方法之 可变字符串

String(StringBuffer buffer)
分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列。
String(StringBuilder builder)
分配一个新的字符串,它包含字符串生成器参数中当前包含的字符序列。
可以用 StringBuffer或StringBuilder的toString()将其转换为String类型。

二、静态方法

1.String copyValueOf()

copyValueOf(char[] data) 返回指定数组中表示该字符序列的 String。
copyValueOf(char[] data, int offset, int count) 返回指定数组中表示该字符序列的 String。

    @Test    public void testStringStaticMethod() {        char[] chars = {'A','B','C','D','E'};        System.out.println(String.copyValueOf(chars));//ABCDE        System.out.println(String.copyValueOf(chars,3,2)); //DE,注意下标越界异常    }

2.static String valueOf() 将参数转换为字符串的形式返回

static String valueOf(boolean b)
返回 boolean 参数的字符串表示形式
valueOf(char c)
返回 char 参数的字符串表示形式。
valueOf(char[] data)
返回 char 数组参数的字符串表示形式。
valueOf(char[] data, int offset, int count)
返回 char 数组参数的特定子数组的字符串表示形式。
valueOf(double d)
返回 double 参数的字符串表示形式。
valueOf(float f)
返回 float 参数的字符串表示形式。
valueOf(int i)
返回 int 参数的字符串表示形式。
valueOf(long l)
返回 long 参数的字符串表示形式。
valueOf(Object obj)
返回 Object 参数的字符串表示形式

@Test    public void testStringStaticMethod2() {        System.out.println(String.valueOf(true));//true        System.out.println(String.valueOf('A'));//A        char[] chars = {'A','B','C','D','E'};        System.out.println(String.valueOf(chars));//ABCDE        System.out.println(String.valueOf(chars,3,2));//DE        System.out.println(String.valueOf(3.1415));//3.1415        System.out.println(String.valueOf(3.1415f));//3.1415        System.out.println(String.valueOf(200));//200        System.out.println(String.valueOf(1000000L));//1000000        Object o = new int[2];        System.out.println(String.valueOf(o));//[I@4459eb14,引用类型输出引用地址。    }

3.static String format()

format(Locale l, String format, Object… args)
使用指定的语言环境、格式字符串和参数返回一个格式化字符串。
static String format(String format, Object… args)
使用指定的格式字符串和参数返回一个格式化字符串。

转换符 参数类型 转换结果 示例 %s、%S 常规 字符串,大写时会转换为大写字母,小写时按参数转换(不是转换为小写) %c、%C 字符 %b、%B 常规 如果为null,则转换为false,为布尔值,则转换为相应字符串,其它为true %d 整数 十进制整数 %f 浮点 十进制数 %h 常规 如果为null,则结果为null,反之,是其hashCode码。 %% % %n 换行符 %+d 整数 带有正负号的整数 %04d 整数 说明:0为补位字符,4为输出最小位数,当参数位数小于4位时,前面用0补齐 0015
public static void main(String[] args) {        System.out.println(String.format("这是一个%s%S", "String","String"));//这是一个StringSTRING        System.out.println(String.format("这是一个%c%C", 'a','a'));//这是一个aA        System.out.println(String.format("这是一个%b%B", 'b','b'));//这是一个trueTRUE        System.out.println(String.format("这是一个%b%B", 'b','b'));//这是一个trueTRUE        System.out.println(String.format("%+d", -15));//-15,如是参数是15,则输出+15        System.out.println(String.format("%04d", 15));//0015,如果参数是1500,则输出1500    }

三.实例方法

1.判断字符串的开头或结尾

boolean startWith(String prefix) 判断是否以prefix开头
boolean startWith(String prefix,int off) 判断off位置后是否以prefix开头,prefix为空串时也为true
boolean endWith(String suffix) 判断是否以suffix结尾。suffix为空串时也为true.

@Test    public void test1() {        String s = "string";        System.out.println(s.startsWith("str"));//true        System.out.println(s.startsWith("in",3));//true        System.out.println(s.startsWith(""));//true        System.out.println(s.endsWith("ing"));//true        System.out.println(s.endsWith(""));//true    }

2.大小写转换

String toLowerCase() 按默认的语言环境规则转换为小写
String toLowerCase(Local local) 按指定的语言环境规则转换为小写
String toUpperCase() 按默认的语言环境规则转换为大写
String toUpperCase(Local local) 按指定的语言环境规则转换为大写

3.获取字符串的属性

int hashCode() 获取hashCode码
boolean isEmpty() 当且仅当其长度为0时返回true
int length() 返回字符串的长度

4.字符串的截取

CharSequence subSequence(int begin, int end) 返回一个新的字符序列,它是此序列的一个子序列。
String substring(int begin) 返回从begin位置到末尾的字符串。
String substring(int begin, int end) 返回从begin(包含)到end(不含)之间的字符串
以上参数只能是在0到str.length之间且start<=end,否则会抛出下标越界异常。

5.字符串的拆分

String[] split(String regex) 根据指定的正则表达式来拆分此字符串,结果中不包括结尾的空串。
String[] split(String regex, int limit)根据指定的正则表达式来拆分此字符串,结果中不包括结尾的空串。此时拆分次数受limit限制,如果limit<=0,则会尽可能匹配多的次数,如果limit>0,则会匹配limit-1次,结果数组长度为limit.

@Test    public void test3() {        String s = "boooooo:and:foo";        System.out.println(Arrays.toString(s.split(":")));// [boooooo, and, foo]        System.out.println(Arrays.toString(s.split(":",1)));// [boooooo:and:foo]        System.out.println(Arrays.toString(s.split(":",2)));// [boooooo, and:foo]        System.out.println(Arrays.toString(s.split(":",3)));// [boooooo, and, foo]        System.out.println(Arrays.toString(s.split("o")));//[b, , , , , , :and:f]    }

6.字符串的比较

int compareTo(String anotherString) 按字典顺序比较两个字符串,根据Unicode值来判断,返回值为正整数,0,负整数。
int compareToIgnoreCase(String str) 同上,只是忽略大小写。
boolean equals(String str) 比较两个字符串的内容是否相等。
boolean equalsIgnortCase(String str) 同上,会忽略大小写。
boolean regionMatches(int offset, String other, int ooffset, int len) 比较两个字符串的子串是否相同,注意,当offset<0或offset + len>s.length时,返回false.
boolean regionMatches(boolean ignoreCase, int offset, String other, int offset, int len) 同上,忽略大小写。
boolean contains(CharSequence c) 当此字符串包含指定的char值序列时返回true.
boolean contentEquals(CharSequence cs) 与指定的字符序列比较
boolean contentEquals(StringBuffer sb) 与指定的StringBuffer比较。

7.检索字符串

char charAt(int index) 返回指定索引处的char值。
int codePointAt(int index) 返回指定索引处的字符(Unicode代码点)
int codePointBefore(int index) 返回指定索引之前(index-1)的字符。1<=index<=s.length;
int codePointCount(int begin, int end)返回指定范围中的Unicode代码点的数量。
int indexOf(int ch) 返回指定Unicode代码点在此串中第一次出现的位置。没有时返回-1.
int indexOf(int ch, int fromIndex) 返回从指定索引处开始指定代码点在此串中第一次出现的位置,没有返回 -1。
int indexOf( String str) 返回指定字符串在此字符串中第一次出现的位置。
int indexOf(String str, int fromIndex) 返回从指定位置开始指定字符串在此字符串中第一次出现的位置。
int lastIndexOf(int ch)
int lastIndexOf(int ch, int fromIndex)
int lastIndexOf(String str)
int lastIndexOf(String str, int fromIndex)

8.字符串的替换

String replace(char oldChar, char newChar) 用newChar替换此字符串中出现的所有的oldChar,并返回替换后的字符串。
String replace(CharSequence old, CharSequence new) 理解同上
replaceAll(String regex, String replacement)使用给定的字符串替换所有匹配给定正则表达式的部分,并返回替换后的字符串。
replaceFirst(String regex, String replacement)使用给定的字符串替换匹配给定正则表达式的第一个子串,并返回替换后的字符串。
boolean matches(String regex) 判断此字符串是否匹配给定的正则表达式。

9.字符串的转换

byte[] getBytes() 使用平台默认的字符集将此字符串转换为byte数组。
byte[] getBytes(String charsetName)用指定的字符集将此字符串转换为byte数组。
char[] toCharArray() 将字符串转换为一个字符数组。
void getChars(int begin, int end, char[] chars, int start) 将指定范围内的子字符串转换成字符并存入指定字符数组中。

10.其它

String concat(String str) 将指定字符串拼接到此字符串末尾,相当于 s + str.
String intern() 返回字符串对象的规范化表示形式。如果在字符串常量池中存在一个与此字符串表示一致的字符串,则返回常量池中字符串的引用,如String s1 = “hello”,如果在此之前常量池中已经有一个hello,用s表示.如果调用s1.intern(),此时它会将s1的引用改为s,即相当于此处做了一个s1=s的操作,将s作为标准形式返回。如果在字符串常量池中不存在与之相等的常量,那么此时就会将其放入常量池,其引用不会改变。
String trim() 去掉字符串首尾的空白字符,此方法很常用。

原创粉丝点击