以下是10个最常见的Java字符串问题。
1、如何比较字符串?使用“==”还是使用equals() ?
简单地说,“==”测试引用同一地址,而equals()测试值是否相等。除非需要检查两个字符串是否是同一个对象,否则应该总是使用equals()方法。
如果你知道字符串驻留(string interning)的概念的就更好了。
译注:字符串驻留是指为每个独立的String值只保留一个不可改变的拷贝,详细解释可参见String interning词条。
2、为什么为在处理私密信息的时候,选择char [ ]比String好?
String是不可改变的。这意味着一旦String对象被创建,那个地址上的值将保持不变,直到垃圾收集器有空来做自动清理。而使用char[ ]可以(在用完后)明确地修改它的元素。这种一来,私密信息(例如密码)就不会在系统的任何地方出现。
3、我们可以在switch语句中用String作分支条件吗?
从JDK 7开始是可以的。我们可以使用String符串作为Switch条件。第JDK 6之前,我们不能使用String作为Switch条件。
// java 7 only!
switch (str.toLowerCase()) {
case "a":
value = 1;
break;
case "b":
value = 2;
break;
}
4 、如何转换String为int?
int n = Integer.parseInt("10");
调用很简单,使用如此频繁以致有时会被忽略。
5 、如何用空白符分割字符串?
可以简单地使用正则表达式做分割。“ \s ”代表所有空格符,如“ ”、 “ \ ”、 “ \ r”、“ \ n ”。
String[] strArray = aString.split("\\s+");
6 、substring() 具体干了些什么?
在JDK 6中,substring() 提供了一个显示已有字符串char[]的接口,但不创建新字符串。如果需要创建一个新的char[]表示的字符串,可以像下面一样与一个空字符串相加:
str.substring(m, n) + ""
这样会创建一个新的字符数组,表示新的字符串。示例方法有时可以使代码运行更快,因为垃圾收集器可以收集未使用的大字符串只保留子串。
在Oracle JDK 7中 ,substring()会创建一个新的字符数组而不是使用现有的。点击这个链接有图解说明JDK 6和JDK 7的substring()之间的差异。
7、String vs StringBuilder vs StringBuffer
- String 与StringBuilder的区别:StringBuilder的是可变的,这意味着可以在创建以后再作修改。
- StringBuilder与StringBuffer的区别: StringBuffer的是同步的,这意味着它是线程安全的,但速度比StringBuilder慢。
8、如何重复一个字符串?
在Python中,我们可以乘以一个数字来重复字符串。在Java中,我们可以使用Apache公共语言包(Apache Commons Lang package)中的repeat()。
String str = "abcd";
String repeated = StringUtils.repeat(str,3);
//abcdabcdabcd
9、如何转换字符串为日期?
String str = "Sep 17, 2013";
Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str);
System.out.println(date);
//Tue Sep 17 00:00:00 EDT 2013
10、如何统计某字符在一个字符串中的出现次数?
使用apache公共语言包中的StringUtils:
int n = StringUtils.countMatches("11112222", "1");
System.out.println(n);
附加题
相关推荐
3. **代码高亮**:SourceInsight提供语法高亮功能,不同类型的代码元素(如关键字、注释、字符串等)以不同的颜色显示,有助于快速识别代码结构。 ### 二、代码浏览与导航 1. **代码跳转**:通过F3快捷键,Source...
对于寻找热门查询的问题,例如统计最热门的10个查询字符串,可以使用hashmap + 堆的方法。首先将数据大致划分到小文件中,然后对每个小文件中的ip进行hashmap计数统计,并按数量排序,最后归并或者最小堆依次处理每...
第21章 查找和替换项目(GUI+字符串处理) 21.1 查找和替换原理 21.1.1 项目结构框架分析 21.1.2 项目功能业务分析 21.2 查找和替换项目——利用AWT组件 21.2.1 设计项目的界面——查找和替换输入界面 21.2.2 各种...
4. **GString**:GString是Groovy特有的字符串类型,允许在字符串中嵌入表达式,使字符串格式化更加直观。 5. **方法和属性默认值**:在Groovy中,方法和属性可以有默认值,这增强了API的使用便利性。 6. **元编程...
- 示例代码展示了如何在`ETLUtil`类中实现这个功能,通过`oriString2ETLString`方法将原始字符串转换为ETL处理后的字符串。 2. **Mapper阶段**: - `VideoETLMapper`类继承自Hadoop的`Mapper`,负责读取原始数据...
2. **序列化和反序列化**:由于Redis操作的是二进制数据,客户端通常会提供将Scala对象与Redis的字符串、整数等数据类型之间转换的机制。JSON、protobuf等序列化库可能是常用的选择。 3. **命令支持**:好的客户端...
将类别字段中的空格替换为空字符串 fields[3] = fields[3].replace(" ", ""); // 3. 替换关联视频字段分隔符 "\t" 为 "&" StringBuffer sb = new StringBuffer(); for (int i = 0; i ; i++) { if (i ) { if...
防范措施是使用安全的函数,如参数化命令执行,并避免动态构造命令字符串。 5. **认证与会话管理**:规范强调使用安全的认证机制,如HTTPS进行传输,防止中间人攻击,避免使用不安全的会话ID,定期刷新会话ID,以及...
- 合并字符串:最后将反转后的数组合并成一个新的字符串,单词之间以空格分隔。 4. **示例代码**(C++): ```cpp #include #include #include using namespace std; string reverseWords(string s) { ...
1.用至少两种方法实现方法字符串的逆序。比如输入abcdefg,返回 gfedcba 2.写一个 Web 应用,输入关键词(比如编程),将豆瓣搜索出来的书籍 列出来,并且将亚马逊 Kindle 版本购买价格查询出来。 3.读取网页 的正文...