String常用方法
1.构造方法
String类有特别多个构造方法,下述两个我们已经使用过了:
new String();
new String("字符串内容");
String类还支持使用byte和char类型的数组来实例化对象:
-
(1)byte []
-
String(byte[] bytes)
byte [] bytes= {97,98,99}; String s = new String(bytes); //将byte数组做为参数实例化字符串对象 System.out.println(s); //会将byte数组中的值转换为Unicode字符集中对应的字符 //输出结果为:abc
-
String(byte[] bytes, int offset, int length)
byte [] bytes= {97,98,99}; String s = new String(bytes,1,2); //第一个参数为byte[],第二个为起始数据下标,第三个参数为长度 System.out.println(s); //输出结果为:bc
-
-
(2)char[](与byte类似)
-
String(char[] value)
char[] chars= {'我','爱','中','国'}; String s1 = new String(chars); //将char数组做为参数实例化字符串对象 System.out.println(s1); //直接输出 //输出结果为:我爱中国
-
String(char[] value, int offset, int count)
char[] chars= {'我','爱','中','国'}; String s1 = new String(chars,1,3); //第一个参数为char[],第二个为起始数据下标,第三个参数为长度 System.out.println(s1); //输出结果为:爱中国
还有其它构造方法,可在api文档中查阅。
-
2.普通方法
-
char charAt(int index)
//返回字符串中指定下标的字符 char c = "hello".charAt(1); System.out.println(c); //结果为:e
-
int indexOf(String str)
(不知道为什么排版调不过去Q_Q)
//返回字符串中指定下标的字符
//返回字符串中指定字符的下标(第一个)
System.out.println("hello".indexOf("l")); //结果为:2
- int lastIndexOf(String str)
//返回字符串中指定字符的下标(最后一个)
System.out.println("hello".lastIndexOf("l")); //结果为:3
-
int compareTo(String anotherString)
//按字典顺序比较两个字符串 //两个字符串相等则比较结果为0 //比较到不相同的第一个字符将不再进行比较,若前面的字符比后面的大,则结果为1,若前面的字符比后面的小,则结果为-1 System.out.println("abc".compareTo("abc")); //0,相等 System.out.println("abd".compareTo("abc")); //1,d>c System.out.println("abc".compareTo("abd")); //-1,c<d
-
**int compareToIgnoreCase(String str) **
//同上compareTo,但是忽略大小写 System.out.println("aBc".compareToIgnoreCase("Abc")); //0 System.out.println("Abd".compareToIgnoreCase("aBc")); //1 System.out.println("abC".compareToIgnoreCase("abD")); //-1
-
boolean equals(Object anObject)
//比较两个字符串的内容是否相等,相等为treu,不相等则为false System.out.println("abc".equals("abc")); //true System.out.println("abd".equals("abc")); //false System.out.println("abc".equals("abd")); //false
-
boolean contains(CharSequence s)
//字符串中是否包含某个子串 System.out.println("Hello.java".contains(".java")); //true
-
**boolean startsWith(String prefix) **
//是否以什么开头 System.out.println("https://www.baidu.com".startsWith("https")); //true
-
**boolean endsWith(String suffix) **
//是否以什么结尾 System.out.println("Hello.java".endsWith(".java")); //true
-
int length()
//返回字符串的长度(包含空格和tab,一个空格算1,一个tab算2) System.out.println(" hello world".length()); //13
-
boolean isEmpty()
//判断字符串是否为""(注意区别于null) System.out.println("".isEmpty()); //true System.out.println("a".isEmpty()); //false
-
String replace(CharSequence target, CharSequence replacement),也可是char
//用新的字符串代替原字符串中的子串 String s = "http://www.baidu.com".replace("http", "https"); System.out.println(s); //https://www.baidu.com //只要符合的子串都替换 String s1 = "http://www.baidu.com.http".replace("http", "https"); System.out.println(s1); //https://www.baidu.com.https
-
**String[] split(String regex) **
//以regex作为分隔符分割字符串,以数组接收 String[] s1 = "2021-01-24".split("-"); for (String s2 : s1) { System.out.print(s2+"\t"); //输出:2021 01 24 }
-
String substring(int beginIndex) ,有重载,(int beginIndex,int endIndex),前开后闭[ )
//返回指定下标该字符串的子串 System.out.println("hello".substring(1)); //ello System.out.println("hello".substring(1,3)); //el
-
String toLowerCase()
//将字符串中所有的大写字母转换成小写 System.out.println("helloWORLD".toLowerCase()); //helloworld
-
String toUpperCase()
//将字符串中所有的大写字母转换成大写 System.out.println("helloWORLD".toUpperCase()); //HELLOWORLD
-
String trim()
//删除任何前导和尾随空格 System.out.println(" hello world ".trim()); //hello world
-
byte[] getBytes()
//将字符串中的每个字符一个一个转换成对应的Unicode编码表里的值,并存在byte[]中 byte[] bytes = "hello".getBytes(); for (byte aByte : bytes) { System.out.print(aByte+"\t"); //输出:104 101 108 108 111 }
-
char toCharArray()
//将字符串中的每个字符一个一个存在char[]中 char[] chars = "hello".toCharArray(); for (char aChar : chars) { System.out.print(aChar+"\t"); //输出:h e e l o }
-
String toString()
//输出字符串对象的:全限定包名 类名 @ 哈希码值 //直接输出字符串与字符串对象调用toString()同
3. 静态方法
-
String String.valueof(各个类型的参数)
//将其它数据类型转换为String类型 //虽然输出结果与参数一致,但是数据类型已经变成了String System.out.println(String.valueOf(true)); //输出true System.out.println(String.valueOf(1)); //输出1 System.out.println(String.valueOf(10.10)); //输出10.10 //参数为对象 System.out.println(String.valueOf(new StringDemo05())); //输出com.dh.string.StringDemo05@38082d64
解析:
valueOf()的本质调用的是Object中的toString方法,所以参数为对象时,输出的是getClass()+@+hashCode();
所以要想输出对象的属性,就需要在类StringDemo05中重写toString()。
以上方法是比较常用的,并不是全部,以上介绍的一些方法中也还有一些别的重载,可以自行查阅api文档~