- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章十大常见Java String问题_动力节点Java学院整理由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文介绍Java中关于String最常见的10个问题
1. 字符串比较,使用 "==" 还是 equals() ?
简单来说, "==" 判断两个引用的是不是同一个内存地址(同一个物理对象). 。
而 equals 判断两个字符串的值是否相等. 。
除非你想判断两个string引用是否同一个对象,否则应该总是使用 equals()方法. 。
如果你了解 字符串的驻留 ( String Interning ) 则会更好地理解这个问题 。
2. 对于敏感信息,为何使用char[]要比String更好?
String是不可变对象, 意思是一旦创建,那么整个对象就不可改变. 即使新手觉得String引用变了,实际上只是(指针)引用指向了另一个(新的)对象. 。
而程序员可以明确地对字符数组进行修改,因此敏感信息(如密码)不容易在其他地方暴露(只要你用完后对char[]置0). 。
3. 在switch语句中使用String作为case条件?
从 JDK7 开始,这是可以的,啰嗦一句,Java 6 及以前的版本都不支持这样做. 。
1
2
3
4
5
6
7
8
9
|
// 只在java 7及更高版本有效!
switch
(str.toLowerCase()) {
case
"a"
:
value =
1
;
break
;
case
"b"
:
value =
2
;
break
;
}
|
4. 转换String为数字 。
对于非常大的数字请使用Long,代码如下 。
1
2
|
int
age = Integer.parseInt(
"10"
);
long
id = Long.parseLong(
"190"
);
// 假如值可能很大.
|
5. 如何通过空白字符拆分字符串 。
String 的 split()方法接收的字符串会被当做正则表达式解析.
"\s"代表空白字符,如空格" ",tab制表符"\t", 换行"\n",回车"\r". 。
而编译器在对源代码解析时,也会进行一次字面量转码,所以需要"\\s". 。
1
|
String[] strArray = aString.split(
"\\s+"
);
|
6. substring() 方法内部是如何处理的?
在JDK6中,substring()方法还是共用原来的char[]数组,通过偏移和长度构造了一个"新"的String.
想要substring()取得一个全新创建的对象,使用如下这种方式
1
|
String sub = str.substring(start, end) +
""
;
|
当然 Java 7 中,substring()创建了一个新的char[] 数组,而不是共用. 。
想要了解更多,请参考: JDK6和JDK7中substring()方法及其差异 。
7. String vs StringBuilder vs StringBuffer 。
StringBuilder 是可变的,因此可以在创建以后修改内部的值. 。
StringBuffer 是同步的,因此是线程安全的,但效率相对更低. 。
8. 如何重复拼接同一字符串?
方案1: 使用Apache Commons Lang 库的 StringUtils 工具类. 。
1
2
|
String str =
"abcd"
;
String repeated = StringUtils.repeat(str,
3
);
//abcdabcdabcd
|
方案2
使用 StringBuilder 构造. 更灵活. 。
1
2
3
4
5
6
7
8
|
String src =
"name"
;
int
len = src.length();
int
repeat =
5
;
StringBuilder builder =
new
StringBuilder(len * repeat);
for
(
int
i=
0
; i<repeat; i++){
builder.append(src);
}
String dst = builder.toString();
|
9. 如何将String转换为日期?
1
2
3
4
|
SimpleDateFormat format =
new
SimpleDateFormat(
"yyyy-MM-dd"
);
String str =
"2016-10-07"
;
Date date = format.parse(str);
System.out.println(format.format(date));
//2016-10-07
|
10. 如何统计某个字符出现的次数?
同样使用Apache Commons Lang 库 StringUtils 类
1
2
|
int
n = StringUtils.countMatches(
"11112222"
,
"1"
);
System.out.println(n);
|
以上所述是小编给大家介绍的十大常见Java String问题_动力节点Java学院整理,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。
最后此篇关于十大常见Java String问题_动力节点Java学院整理的文章就讲到这里了,如果你想了解更多关于十大常见Java String问题_动力节点Java学院整理的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
当我创建一个数据库时,我被要求选择默认排序规则,当我创建一个表时,我被要求选择排序规则。 utf8_general_ci 或...拉丁...?区分哪个是对的依据是什么? 最佳答案 A collatio
PHP不会检查单引号 '' 字符串中变量内插或(几乎)任何转义序列,所以采用单引号这种方式来定义字符串相当简单快捷。但是,双引号 "" 则不然,php会检查字符串中的变量或者转义
正则(regular),要使用正则表达式需要导入Python中的re(regular正则的缩写)模块。正则表达式是对字符串的处理,我们知道,字符串中有时候包含很多我们想要提取的信息,掌握这些处理字符
在开发过程中,有时需要对用户输入的类型做判断,最常见是在注册页面即用户名和密码,代码整理如下: 只能为中文 ?
]js正则表达式基本语法(精粹): http://www.zzvips.com/article/94068.html 许多语言,包括P
1、首先安装mongodb 1.下载地址:http://www.mongodb.org/downloads 2.解压缩到自己想要安装的目录,比如d:\mongodb 3.创建文件夹d:\mo
我更愿意在 R 中执行以下操作,但我愿意接受(易于学习的)其他解决方案。 我有多个(比如说 99 个)制表符分隔文件(我们称它们为 S1.txt 到 S99.txt)和表格,所有文件都具有完全相同的格
我制作了一个小程序,可以使用数学进行物理计算。 我有几个 if 语句,它们做同样的事情,但变量不同,但它们必须是它们,就好像 TextBox 是空的,int 将是 0。 例子如下: if (first
我正在构建需要扩展框的东西 - 这很好,我可以正常工作。然而,如果你看看这个FIDDLE你会看到它有点乱。我希望有一种方法可以扩展它们所在的盒子,这样它们就不会跳来跳去?那么盒子 3 的左侧会比右侧膨
我相当确定(在 MATLAB 中)应该有一个优雅的解决方案,但我现在想不起来。 我有一个包含 [classIndex, start, end] 的列表,我想将连续的类索引折叠成一个组,如下所示: 这个
维基百科将 XMPP 定义为: ...an open-standard communications protocol for message-oriented middleware based on
我的代码库已经进入了某种状态,希望能够摆脱它 repo 看起来有点像这样(A1、B1、C1 等显然是提交) A1 ---- A2 ---- A3 ---- A4 -
如何整理以下数据框 data.frame(a = c(1,2), values = c("[1.1, 1.2, 1.3]", "[2.1, 2.2]")) a values 1
所以我试图在 Haskell 中生成出租车号码列表。出租车号码是可以用两种不同方式写成两个不同立方体之和的数字 - 最小的是 1729 = 1^3 + 12^3 = 9^3 + 10^3 . 现在,我
我正在使用 roxygen2 来记录我正在开发的包的数据集。我知道你可以 use roxygen to document a dataset ,但是Shane's answer最终建议进行黑客攻击,虽
这个问题在这里已经有了答案: How can I combine two strings together in PHP? (19 个回答) 关闭 5 年前。 提前致歉,尽管我已经尝试并失败了几件不
我有一个大部分整洁的数据框,但有 2 列包含基准,而不是将基准合并为观察结果。我该如何整理,以便将“Facility_score”和“TTP”col_names 添加为每个独特的 FYQ 和 Metr
我有以下输入数据。每一行都是一个实验的结果: instance algo profit time x A 10 0.5 y A
我已经使用 PHP 和 MySQL 实现了搜索。目前我的表格整理是 "utf8_unicode_ci"。问题是,使用此排序规则 "ä"= "a" 是。如果我将排序规则更改为 "utf_bin" 一切正
所以我是 JS 和 Jquery 库的新手。我一直在玩弄一些东西,可以看到它非常不整洁,这就是我希望你们能帮助建议一种更好的方法来实现我想要实现的目标的地方。 目标: 要有多个复选框,其中一些如果被选
我是一名优秀的程序员,十分优秀!