String类是Java语言中常用的一个类,基本在所有的项目开发中都会用到。String类的实例化方式有两种:
1.直接赋值
String str = "Hello Bit";//str是一个对象,那么 "Hello Bit"就应该保存在堆内存中
System.out.println(str);
直接赋值是最常用的实例化方式,但是String 本身是一个类,既然是类,那么类中一定存在构造方法。String 类的其中一种构造方法如下:
public String(String str);
2.传统方法(构造法)
String str = new String ("Hello Bit");
System.out.println(str);
这种方法使用了关键字new进行对象实例化
以下是String类的功能扩展实现:
//String类扩展功能实现
public class Strings{
/**
* 1.重复某个字符
*
* 例如:
* 'a' 5 => "aaaaa"
* 'a' -1 => ""
*
* @param c 被重复的字符
* @param count 重复的数目,如果小于等于0则返回""
* @return 重复字符字符串
*/
public static String repeat(char c, int count) {
if(count<0){
return null;
}else{
char[] a=new char[count];
int i=0;
for(i=0;i<count;i++){
a[i]=c;
}
String str=new String(a);
return str;
}
}
/**
* 2.将已有字符串填充为规定长度,如果已有字符串超过这个长度则返回这个字符串
* 字符填充于字符串前
*
* 例如:
* "abc" 'A' 5 => "AAabc"
* "abc" 'A' 3 => "abc"
*
* @param str 被填充的字符串
* @param filledChar 填充的字符
* @param len 填充长度
* @return 填充后的字符串
*/
public static String fillBefore(String str, char filledChar, int len) {
int length=str.length();
if(str==null){
return null;
}
if(len<=length){
return str;
}else{
str=repeat(filledChar,len-length)+str;
}
return str;
}
/**
* 3.将已有字符串填充为规定长度,如果已有字符串超过这个长度则返回这个字符串<br>
* 字符填充于字符串后
* 例如:
* "abc" 'A' 5 => "abcAA"
* "abc" 'A' 3 => "abc"
*
* @param str 被填充的字符串
* @param filledChar 填充的字符
* @param len 填充长度
* @return 填充后的字符串
*/
public static String fillAfter(String str1, char filledChar, int len) {
int length=str1.length();
if(str1==null){
return null;
}
if(len<=length){
return str1;
}else{
str1=str1+repeat(filledChar,len-length);
}
return str1;
}
/**
* 4.移除字符串中所有给定字符串
* 例:removeAll("aa-bb-cc-dd", "-") => aabbccdd
*
* @param str 字符串
* @param strToRemove 被移除的字符串
* @return 移除后的字符串
*/
public static String removeAll(CharSequence str2, CharSequence strToRemove) {
String a=new String(str2.toString());
if(str2 == null){
return null;
}else{
a=a.replaceAll(strToRemove.toString(),"");
return a;
}
}
/**
* 5.反转字符串
* 例如:abcd => dcba
*
* @param str 被反转的字符串
* @return 反转后的字符串
*/
public static String reverse(String str3) {
if(str3==null){
return null;
}
char[] b = str3.toCharArray();
int start=0,tail=b.length-1;
while(start<tail){
char temp=b[tail];
b[tail]=b[start];
b[start]=temp;
start++;
tail--;
}
String c=new String(b);
return c;
}
public static void main(String[] args){
//1.repeat
char c = 'l';
System.out.println("重复的字符为:"+c+" 重复后的字符为:"+repeat(c,5));
System.out.println("重复的字符为:"+c+" 重复后的字符为:"+repeat(c,0));
System.out.println("重复的字符为:"+c+" 重复后的字符为:"+repeat(c,-1));
System.out.println("*************************************");
//2.在字符串前填充
String str="tkhlsm";
System.out.println("填充前的字符串为:"+str+ "填充后的字符串为:"+fillBefore(str,'a',8));
System.out.println("填充前的字符串为:"+str+ "填充后的字符串为:"+fillBefore(str,'a',5));
System.out.println("*************************************");
//3.在字符串后填充
String str1="lsm";
System.out.println("填充前的字符串为:"+str1+ "填充后的字符串为:"+fillAfter(str1,'d',5));
System.out.println("填充前的字符串为:"+str1+ "填充后的字符串为:"+fillAfter(str1,'d',3));
System.out.println("*************************************");
//4.移除字符串中所有给定字符串
CharSequence str2="ttz-lsm-zwd-mmd";
System.out.println("移除前的字符串为:"+str2+ "移除后的字符串为:"+removeAll(str2,"-"));
System.out.println("*************************************");
//5.反转字符串
String str3="abcde";
System.out.println("反转前的字符串:"+str3+ "反转后的字符串为:"+reverse(str3));
System.out.println("*************************************");
}
}
运行结果: