最近在补java基础,因为不是科班所以基础并不是特别好,有些内容学习的时间太久了,忘了一些,所以刻意找了一些视频补补基础。
String中有许多方法,在不使用StringBuilder和StringBuffer类的情况下设计一些方法,完成需求。里面最后第7,8个方法是参考渡一教育郑中拓老师的做法,有些方法我写出来后发现写的跟讲解的基本一样,最后两个方法觉得还是郑中拓老师写的好。
代码
public class StringTest {
//1.实现字符串的反转
public String reverse(String str) {
char[] charstr = str.toCharArray();
for (int i = 0; i < charstr.length / 2; i++) {
char temp = charstr[i];
charstr[i] = charstr[charstr.length - 1 - i];
charstr[charstr.length - 1 - i] = temp;
}
return new String(charstr);
}
//2.将字符串正序和反序进行连接
public String concat(String str) {
String restr = reverse(str);
return str.concat(restr);
}
//3.判断给定字符串是否回文
public boolean isHuiwen(String str) {
// boolean result=true;
// char[] charstr=str.toCharArray();
// for(int i=0;i<charstr.length/2;i++){
// if(charstr[i]!=charstr[charstr.length-1-i])
// result=false;
// }
// return true;
String restr = reverse(str);
if (str.equals(restr))
return true;
else
return false;
}
//4.将给定的字符串向左移动count位
public String rightMove(String str, int count) {
if (count > str.length())
count %= str.length();
String prestr = str.substring(0, count);
String substr = str.substring(count);
return substr.concat(prestr);
}
//5.寻找字符串中最长的那个
public String maxLengthString(String... strs) {
String result = strs[0];
int maxLength = strs[0].length();
for (int i = 1; i < strs.length; i++) {
if (strs[i].length() > result.length()) {
maxLength = strs[i].length();
result = strs[i];
}
}
return result;
}
//6.设计一个方法,统计一个字符在字符串中出现的次数
public int findCount(String str, char ch) {
// int count = 0;
// char[] charstr = str.toCharArray();
// for(int i=0;i<charstr.length;i++){
// if(ch==charstr[i])
// count++;
// }
// return count;
return str.length()-str.replace(String.valueOf(ch),"").length();
}
//7.将给定的字符串的首字母大写
public String UpperFirst(String str){
String result="";
String[] substr=str.split(" ");
for(int i=0;i<substr.length;i++){
String word=substr[i];
String first=word.substring(0,1).toUpperCase();
String follow=word.substring(1);
result=result.concat(first.concat(follow))+" ";
}
return result.trim();
}
//8.获取给定字符串中的数字
public int findNumber(String str){
String result="";
for(int i=0;i<str.length();i++){
int num=str.codePointAt(i);
if(num>=48&&num<=57){
result=result+(char)num;
}
}
return Integer.parseInt(result);
}
}
写一个测试类测试一下,这里是用以前写过的代码的主类删除之后写的,所以起名没有很规范。
代码
public class FirstDemo {
public static void main(String[] args){
StringTest st=new StringTest();
String result1=st.reverse("ok");
System.out.println(result1);
String result2=st.concat("ok");
System.out.println(result2);
boolean result3=st.isHuiwen("okko");
System.out.println(result3);
String result4=st.rightMove("abcdefg",2);
System.out.println(result4);
String result5=st.maxLengthString("abc","abcd","abcdefg","abc");
System.out.println(result5);
int result6=st.findCount("ababcdfrbaa",'a');
System.out.println(result6);
String result7=st.UpperFirst("this is a java project");
System.out.println(result7);
int result8=st.findNumber("gdgf7fghj7fhgjh9hjkgy4");
System.out.println(result8);
}
}
结果
ko
okko
true
cdefgab
abcdefg
4
This Is A Java Project
7794
没有把每个方法分开写,因为有点懒,嘿嘿。这里面的内容算是很基础的,但是对于Sting这个类的使用也会有更多的印象,如果后面又忘了那些方法,那就查一下API文档。