目录
问题与解答
问题一(substring的边界问题)
public String substring(int beginindex, int endindex);
包括两个边界 beginindex 和 endindex吗?
解答
包含开始位置,不包含结束位置
【beginindex,endindex)
问题二(字符串拼接的内存问题)
这种截取字符串的方法,会在常量池创建 一个新的 内容吗?
解答
会,不会改变原来字符串,每次改变都会在常量池中创建空间,所以频繁拼接等改变字符串,会在内存生成大量无用空间,故而有了StringBuffer类
问题三(字符串索引的起始点问题)
int index = fileName.lastIndexOf(".");
if(index!=-1 && index!=0 &&
fileName.substring(index+1, fileName.length()).equals("java")){
fileCorrect = true;
}else{
System.out.println("文件名无效。");
}
索引是不是从0开始,如果是0会索引越界吗,为什么index要!= -1?
解答
索引是从0开始,不会越界,因为截取包含头,不包含尾。
问题四(split方法无法分割的特殊字符)
在完成作业时,
String str1 = "1.2.3.4.5";
String[] strs = str1.split(".");
无法正确的使用"."进行字符串的分割,为什么呢?
解答
经过查询,符号"."属于正则表达式中的符号,在使用这些符号本身的时候需要转义。
在当下,需要转义的字符有
字符 | 转义 | 不加转义的结果 |
---|---|---|
. | \\. | 输出了空字符串数组 |
| | \\| | 把数组按照字符每一项分割 |
* | \\* | 报错 |
\ | \\\\ | 报错 |
[] | \\[\\] | 报错 |
问题五(继问题四、什么是正则表达式)
什么是正则表达式,有什么作用
解答
正则表达式以我的理解就是具有一些特殊功能的字符,简化操作,帮助我们。
字符 | 意义 |
---|---|
\n | 换行 |
\t | 制表符 |
\和& | 逻辑运算 |
\u | 后面跟四个十六进制的数字,表示Unicode字符 |