1.首先请说一下String常用的方法有哪些?
该问题其实是考察Java基础,毕竟String类在平时的开发中使用非常广泛,主要有以下方法:
- length
- equals
- trim
- substring
- concat
- indexOf
- lastIndexOf
- replace
- split
- toLowerCase
- toUpperCase
2.如何判断一个字符串中某个字符出现的次数?
此题是指定某一个字符,并统计它出现的字数,此时我们可以把字符串转换为字符数组,然后使用foreach循环,在循环体内进行字符比对,代码如下所示:
public static void main(String[] args) {
String str = "ABC123ABC";
char searchChar = 'B';
int count = 0;
char[] charArray = str.toCharArray();
for (char item : charArray) {
if (item == searchChar) {
count++;
}
}
System.out.println("字符" + searchChar + "出现的次数为:" + count);
}
2.如果不能使用循环,只使用String自己的方法,如何实现呢?
此时可以使用stringreplace()方法,代码如下
public static void main(String[] args) {
String str = "ABC123ABC";
String searchChar = "B";
int count = 0;
int origialLength = str.length();
str = str.replace(searchChar, "");
int newLength = str.length();
count = origialLength - newLength;
System.out.println("字符" + searchChar + "出现的次数为:" + count);
}
3.如果要统计字符串中每个字符出现个数,那么结果就是:字符x1出现了n1次,字符x2出现了n2次,字符x3出现了n3次,其中x1、x2、x3是不能重复的,HashMap的key也是不能重复的,刚好符合这个需求,所以可以用HashMap来存储每个字符和它对应的次数。
步骤:
第一步,创建一个HashMap<Character, Integer>型的HashMap对象hashMap,Character对应字符的类型,Integer对应它的出现次数。
第二步,遍历字符串中的字符,对每个字符要分2种情况:
(1)hashMap的key中还没有此字符。这时要把此字符的次数置为1。
(2)hashMap的key中已经有此字符。这时要先把该字符的次数取出,把它加1之后再放进去。
代码如下:
public class CalcCharacterNumInString {
public static void main(String[] args) {
//给定字符串
String s = "cecdddddbb";
HashMap<Character, Integer> hashMap = new HashMap<>();//key-value:字符-出现次数
if (s.length() > 0) {
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
//如果map中没有此字符,则次数置为1
if (!hashMap.containsKey(c)) {
hashMap.put(c, 1);
} else {
//如果map中有此字符,则次数增1
Integer temNum = hashMap.get(c);
temNum++;
hashMap.put(c, temNum);
}
}
System.out.println(hashMap);
} else {
System.out.println("给定字符串中没有字符");
}
}
}
4.怎么让一个字符串反转?
1.使用 StringBuilder的reverse()方法
public static void main(String[] args) {
String str = "ABC123ABC";
StringBuilder stringBuilder = new StringBuilder(str);
stringBuilder.reverse();
String newStr = stringBuilder.toString();
System.out.println("反转前:" + str);
System.out.println("反转后:" + newStr);
}
2.可以利用数据结构中的栈,因为栈的特点是先入后出(这里可以提一下和队列的不同,队列的特点是先入先出),先把字符串中的每个字符按顺序入栈,再依次出栈,即可实现字符串的反转。
public static void main(String[] args) {
String str = "ABC123ABC";
char[] charArray = str.toCharArray();
Stack<Character> stack = new Stack<>();
StringBuilder newStr = new StringBuilder();
for (char item : charArray) {
stack.push(item);
}
for (int i = 0; i < charArray.length; i++) {
newStr.append(stack.pop());
}
System.out.println("反转前:" + str);
System.out.println("反转后:" + newStr.toString());
}