前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中String相关面试题

Java中String相关面试题

作者头像
宇宙之一粟
发布2020-10-26 10:28:25
3730
发布2020-10-26 10:28:25
举报
文章被收录于专栏:宇宙之_一粟

面试题

如何解决 String 乱码的问题

答:乱码的问题的根源主要是两个:字符集不支持复杂汉字、二进制进行转化时字符集不匹配,所以在 String 乱码时我们可以这么做:

  1. 所有可以指定字符集的地方强制指定字符集,比如 new String 和 getBytes 这两个地方;
  2. 我们应该使用 UTF-8 这种能完整支持复杂汉字的字符集。
为什么大家都说 String 是不可变的

答:主要是因为 String 和保存数据的 char 数组,都被 final 关键字所修饰,所以是不可变的,具体细节描述可以参考上文。

String 一些常用操作问题,如问如何分割、合并、替换、删除、截取等等问题

答:这些都属于问 String 的基本操作题目,考察我们平时对 String 的使用熟练程度,可以参考上文。

为什么要把String类型设计成不可变?

答:1、允许String对象缓存HashCode;2、安全性;3、字符串常量池的需要。

第一:在Java程序中String类型是使用最多的,这就牵扯到大量的增删改查,每次增删改差之前其实jvm需要检查一下这个String对象的安全性,就是通过hashcode,当设计成不可变对象时候,就保证了每次增删改查的hashcode的唯一性,也就可以放心的操作。

第二:网络连接地址URL,文件路径path通常情况下都是以String类型保存, 假若String不是固定不变的,将会引起各种安全隐患。就好比我们的密码不能以String的类型保存,,如果你将密码以明文的形式保存成字符串,那么它将一直留在内存中,直到垃圾收集器把它清除。而由于字符串被放在字符串缓冲池中以方便重复使用,所以它就可能在内存中被保留很长时间,而这将导致安全隐患

第三:字符串值是被保留在常量池中的,也就是说假若字符串对象允许改变,那么将会导致各种逻辑错误。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面试题
    • 如何解决 String 乱码的问题
      • 为什么大家都说 String 是不可变的
        • String 一些常用操作问题,如问如何分割、合并、替换、删除、截取等等问题
          • 为什么要把String类型设计成不可变?
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档