本文介绍Java中关于String最常见的10个问题:

1. 字符串比较,使用 "==" 还是 equals() ?
简单来说, "==" 判断两个引用的是不是同一个内存地址(同一个物理对象).
而 equals 判断两个字符串的值是否相等.
除非你想判断两个string引用是否同一个对象,否则应该总是使用 equals()方法.
如果你了解 字符串的驻留 ( String Interning ) 则会更好地理解这个问题
2. 对于敏感信息,为何使用char[]要比String更好?
String是不可变对象, 意思是一旦创建,那么整个对象就不可改变. 即使新手觉得String引用变了,实际上只是(指针)引用指向了另一个(新的)对象.
而程序员可以明确地对字符数组进行修改,因此敏感信息(如密码)不容易在其他地方暴露(只要你用完后对char[]置0).
3. 在switch语句中使用String作为case条件?
从 JDK7 开始,这是可以的,啰嗦一句,Java 6 及以前的版本都不支持这样做.
// 只在java 7及更高版本有效!
switch (str.toLowerCase()) {
case "a":
value = 1;
break;
case "b":
value = 2;
break;
}
4. 转换String为数字
对于非常大的数字请使用Long,代码如下
int age = Integer.parseInt("10");
long id = Long.parseLong("190"); // 假如值可能很大.
5. 如何通过空白字符拆分字符串
String 的 split()方法接收的字符串会被当做正则表达式解析,
"\s"代表空白字符,如空格" ",tab制表符"\t", 换行"\n",回车"\r".
而编译器在对源代码解析时,也会进行一次字面量转码,所以需要"\\s".
String[] strArray = aString.split("\\s+");
6. substring() 方法内部是如何处理的?
在JDK6中,substring()方法还是共用原来的char[]数组,通过偏移和长度构造了一个"新"的String。
想要substring()取得一个全新创建的对象,使用如下这种方式:
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 工具类.
String str = "abcd"; String repeated = StringUtils.repeat(str,3);//abcdabcdabcd
方案2:
使用 StringBuilder 构造. 更灵活.
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转换为日期?
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 类:
int n = StringUtils.countMatches("11112222", "1");
System.out.println(n);
以上所述是小编给大家介绍的十大常见Java String问题_动力节点Java学院整理,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# java
# string
# 问题
# 浅谈java String.split丢失结尾空字符串的问题
# java中String类型变量的赋值问题介绍
# Java中String判断值为null或空及地址是否相等的问题
# 简单谈谈Java中String类型的参数传递问题
# Java中String类(字符串操作)的10个常见问题和解决方法
# java判断字符串String是否为空问题浅析
# 小编
# 的是
# 这是
# 如果你
# 都不
# 也会
# 十大
# 一句
# 在此
# 你想
# 这个问题
# 请使用
# 不容易
# 这样做
# 给大家
# 更高
# 要比
# 在对
# 只在
# 你用
相关文章:
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
定制建站哪家更专业可靠?推荐榜单揭晓
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
常州自助建站费用包含哪些项目?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
制作网站外包平台,自动化接单网站有哪些?
如何续费美橙建站之星域名及服务?
北京的网站制作公司有哪些,哪个视频网站最好?
微信推文制作网站有哪些,怎么做微信推文,急?
建站之星上传入口如何快速找到?
如何快速生成橙子建站落地页链接?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
建站上传速度慢?如何优化加速网站加载效率?
如何在阿里云购买域名并搭建网站?
如何访问已购建站主机并解决登录问题?
建站之星后台密码遗忘?如何快速找回?
建站之星安装失败:服务器环境不兼容?
如何制作网站标识牌,动态网站如何制作(教程)?
javascript基本数据类型及类型检测常用方法小结
已有域名和空间,如何快速搭建网站?
制作营销网站公司,淘特是干什么用的?
制作门户网站的参考文献在哪,小说网站怎么建立?
威客平台建站流程解析:高效搭建教程与设计优化方案
如何快速查询域名建站关键信息?
如何在阿里云域名上完成建站全流程?
如何快速选择适合个人网站的云服务器配置?
如何生成腾讯云建站专用兑换码?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
如何使用Golang table-driven基准测试_多组数据测量函数效率
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
小型网站制作HTML,*游戏网站怎么搭建?
c# 在ASP.NET Core中管理和取消后台任务
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
活动邀请函制作网站有哪些,活动邀请函文案?
建站主机无法访问?如何排查域名与服务器问题
如何通过虚拟主机空间快速建站?
广东企业建站网站优化与SEO营销核心策略指南
公司网站制作需要多少钱,找人做公司网站需要多少钱?
建站之家VIP精选网站模板与SEO优化教程整合指南
岳西云建站教程与模板下载_一站式快速建站系统操作指南
如何选择美橙互联多站合一建站方案?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
代购小票制作网站有哪些,购物小票的简要说明?
自助网站制作软件,个人如何自助建网站?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
如何在新浪SAE免费搭建个人博客?
建站10G流量真的够用吗?如何应对访问高峰?
*请认真填写需求信息,我们会在24小时内与您取得联系。