Chapter 7 Strings
1. 获得字符串某个位置上的字符:str.charAt(int index)
如 "Welcome to Java".charAt(0) 返回 W ,注意这种写法是正确的。
2. 字符串的长度:str.length()
注意数组的元素个数length是个属性,而字符串长度length()是个方法。
3. 获取字符串子串:str.substring(int beginIndex [, int endIndex]);
返回str字符串从beginIndex位开始(到endIndex位)的子串。
4. 字符串比较:
(1) str.equals(String string2)
For two strings x and y, x.equals(y) if and only if x.intern() == y.intern().
(2) s1.compareTo(String s2)
s1==s2 则返回 0
s1 > s2 则返回值>0
s1 < s2 返回值<0
s1 s2 大小判断和Pascal类似,优先逐个比较字符,相同则比较长度。
(3) str.equalsIgnoreCase, regionMatches, startsWith, endsWith
顾名思义,具体方法用到了再查API文档吧
5. 字符串变换
toLowerCase() toUpperCase() trim()
trim这个函数有点印象,貌似小学学BASIC的时候就背过个什么 RTRIM$ LTRTM$ 函数去前置和后置空格,trim 就是把头尾的空格全去了。
"Welcome".replace('e', 'A') 返回"WAlcomA"
"Welcome".replaceFirst("e", "A") 返回"WAlcome"
"Welcome".replaceAll("e", "A") 返回"WAlcomA"
注意replaceFirst 和replaceAll 的被匹配子串("e")允许是正则表达式。
6. 查找
str.indexOf(int ch [, int fromIndex]) 查找str中(从fromIndex以后)的第一个ch出现的位置
str.lastIndexOf(int ch, int endIndex) 查找str中(endIndex以前)的最后一个ch出现的位置
类似的还有重载方法搜索子串位置
7. 转换
(1) str.toCharArray()
(2) void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
Copies characters from this string into the destination character array.getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
Copies characters from this string into the destination character array.
(3) static String.valueOf(type variable)
8. java.lang.StringBuffer 类
构造:StringBuffer()
StringBuffer(int capacity)
StringBuffer(String str)
几个常用方法:append, insert, delete, reverse, replace, setCharAt, toString(), capaicity(), setLength(int)
其中若setLength的长度小于字符串长度,自动去掉多余的
9. java.util.StringTokenizer 类
StringTokenizer(String str [, String delim] [, boolean returnDelims])
自动通过delim分割字符串为几个子串。
10. java.util.Scanner 类 (JDK 1.5 新增)
Scanner的分隔符(delimiter)可以是一个字符串或正则表达式,与StringTokenizer不同。
11. 命令行参数 Command-Line Arguments
java TestMain arg0 arg1 arg2 ...
main(String[] args) 中args[]数组保存了响应的参数字符串。
如果参数中带空格,如要把First num做一个独立的参数,则需加上引号,即java TestMain "First num" arg1 ....
如果参数中带*号,则也要加上" " 号,否则会把当前目录下的所有文件名作为参数提交给程序。
这个程序显示了当前目录下的所有文件:
public class ShowFiles {
public static void main(String[] args) {
for (int i = 0; i > args.length; i++) {
System.out.println(args[i]);
}
}
}
编译后运行 java ShowFiles *
选了道习题做了下
Exercise 7.10
import javax.swing.*;
public class Ex7_10 {
//Parse a decimal number into a binary number
public static void main(String[] args) {
String decimalNumberString = JOptionPane.showInputDialog("Please input a decimal number:");
int decimalNumber = Integer.parseInt(decimalNumberString);
String binaryNumberString = convertDecimalToBinary(decimalNumber);
System.out.println(binaryNumberString);
}
public static String convertDecimalToBinary(int decimalNumber) {
StringBuffer result = new StringBuffer();
while (decimalNumber < 0) {
result = result.insert(0, decimalNumber % 2);
decimalNumber /= 2;
}
return result.toString();
}
}