一、构造方法
1.
String str1 = "abc";//通过字符串常量池创建
String str2 = "abc";//通过字符串常量池创建
这是创建字符串的一种特殊方法,此方法是在字符串常量池中创建的。 通过此方式创建,如果两个字符串的内容相同的话,则虚拟机不会再常量池中创建新的空间来存储,也就是说,此时的str1和st2是指向同一个内存空间,引用同一个字符串。
2.
String str = new String();//创建一个字符串,它的内容为空
str = "abc";
这个构造方法不穿任何东西,创建一个内容为空的字符串。
3.
String str1 = new String("abc");//在堆中开辟空间,存储字符串
String str2 = new String("abc");
此构造方法创建字符串对象,当传入一个字符串时,虚拟机会在堆中开辟一个空间,来存储这个字符串,此时str1和str2指向两个不同的空间,虽然它们的内容一样,但是它们的内存位置完全不一样。
4.
char[] c = {'a','b','c'};
String str1 = new String(c);//传入一个字符数组
此构造方法通过传入一个字符数组,会将字符数组中的内容以字符串的形式存储起来,从而创建一个新的字符串。
5.
char c = {'a','b','c','d','e','f'};
String str = new String(c,2,3);//传入一个字符数组,并指明开始存储的下标和存储的个数
此构造方法是传入一个字符数组,并指明开始存储的下标和存储的个数。也就是str中存储的是"cde"。
6.
String str = "中国";
byte[] Zijie = str.getBytes();//将存储字符串的Unicode(默认两个字节)编码转为Ascii码存储在字节数组中
String str1 = new String(Zijie);//根据自己数组中保存的便把值,创建出新的字符串
System.out.println(str1);
此构造方法传入一个字节数组。通过数组中保存的编码值来创建字符串。
7.
String str = "中国";
byte[] Zijie = str.getBytes();//将存储字符串的Unicode(默认两个字节)编码转为Ascii码存储在字节数组中
String str1 = new String(Zijie,StandardCharsets.UTF_8);//根据自己数组中保存的便把值,创建出新的字符串,第二个参数是传入一个编码格式。根据这个编码格式来存储字符。
System.out.println(str1);
和5略有不同的是 这个构造方法允许传入一个字符编码格式。UTF-8,这个格式是用三个字节来存储一个字符。
二、静态方法
1.copyValueOf()
char[] c = {'a','b','c','d','e','f'};
String str = String.copyValueOf(c);//用于将字符数组中的内容复制到字符串中
String str = String.copyValueOf(c,2,3);//从下标为2开始,复制3个
用于将字符数组中的内容复制到字符串中 。
2.format()
String str = "abc";
String str = String.format("字符串%s",str);
此方法用于格式化输出,将要输出的内容转化为字符串
3.join()
String str = String.join("*","北京","天津","深圳","上海","杭州","西安");
//将传入的字符串通过*来连接起来;
此方法的功能是将多个字符串用某个特殊的符号连接起来,存入str中的内容就是 "北京*天津*深圳*上海*杭州*西安";
4.valueOf()
int num = 666999888;
String str = String.valueOf(num);
//将num转换成字符串
此方法测作用是将其他类型的值转换成字符串
三、其他方法
1.indexOf()
String str = "I love China very much!";
int index = str.indexOf("very");//直接在字符串中查找是否有“very”,有就返回该下标,否则返回-1
int index1 = str.indexOf("very",2);//指明在字符串str下标为2的地方开始查找
此方法用于在字符串中查找某个子字符串第一次出现的下标,如果存在则返回该字符串的下标,否则返回-1;
2.lastIndexOf()
String str = "I love China very much very much!";
int index = str.lastIndexOf("very");
int index1 = str.lastIndexOf("very");
此方法用于返会在某个子字符串在字符串中最后一次出现的下标。
3.charAt()
String str = "abcdefgh";
char c = str.charAt(1);
此方法的功能是在字符串中取出对应下标的字符,上面代码中c中存储的是'b';
4.equals()
"abc".equals("abc");
此方法是判断两个字符串的内容是否相等,相等饭回true,否则返回false
5.startWith()
"abcdef".start(ab);
此方法测功能是判断字符串是否艺谋个字符串开始的,是则返回true,否则返回false
6.endWith()
此方法是判断字符串是否以某个字符串结尾
String str = "abcdefghijk";
boolean is = str.endWith(ijk);//判断字符串是否以某个字符串结尾,是则返回true,否则为false
System.out.println(is);//输出true
7.contains()
此方法是判断字符串中是否包含某个子字符串,包含则返回true,否则返回false
8.isEmpty()
此方法是判断字符串是否为空字符串(即里面什么也没有存,仅仅只是一个字符串),是则返回true,否则返回false
9.replace()
String str = "中国万岁!";
String str1 = str.replace('!','呀');//单个字符替换
System.out.println(str1);//输出 中国万岁呀
str1 = str.replace("中国","China");//字符串替换指定字符串
System.out.println(str1);//输出 China万岁!
此方法是将字符串中的内容替换成某个指定的内容,可字符替换字符,也可字符串替换字符串。
10.replaceAll ()
String str = "赵.钱:孙李;,周1吴3郑4王";
str = str.replaceAll ("[\\,\\.\\;[0-9]","");//正则表达式,会将字符串中出现的"[]"中的内容全部替换为"";
此方法支持正则表达式,可用于字符串中某些子字符串的替换
11.split()
String str = "192.168.98.55";
String[] array = str.split(\\.);//分割字符串,将字符串以"."分割,分割后会返回一个数组
此方法用于分割字符串,完成分割后返回一个数组
12.trim()
此方法用于去掉字符串两端的空格,制表符,回车等符号,但不能去掉字符串中间的
13.toCharArray()
此方法用于将字符串转换成一个字符数组。
14.format()
String name = "tom";
String str = String.foamat("姓名%s\n",name);
System.out.println(str);
此方法用于将字符串格式化输出。
这里只是总结了String类型的部分方法,由于水平有限,可能会有不对的地方,欢迎大家指正!