专栏首页宇宙之_一粟Java中String相关面试题

Java中String相关面试题

面试题

如何解决 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的类型保存,,如果你将密码以明文的形式保存成字符串,那么它将一直留在内存中,直到垃圾收集器把它清除。而由于字符串被放在字符串缓冲池中以方便重复使用,所以它就可能在内存中被保留很长时间,而这将导致安全隐患

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java中String部分源码解析

    既然String是不可变的,好像内部还有很多substring, replace, replaceAll这些操作的方法。好像都是对String对象改变了,解释起...

    宇宙之一粟
  • Java垃圾回收相关面试题

    宇宙之一粟
  • Redis常见面试题

    hmset lilei name "LiLei" age 26 title "Senior"

    宇宙之一粟
  • 我说我精通字符串,面试官竟然问我Java中的String有没有长度限制!?

    String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西容易被忽略的。

    Java技术江湖
  • 我说精通字符串,面试官竟然问我 Java 中的 String 有没有长度限制?

    String 是 Java 中很重要的一个数据类型,除了基本数据类型以外,String 是被使用的最广泛的了,但是,关于 String,其实还是有很多东西容易被...

    淡定的蜗牛
  • Java——String类使用详解(实例化、字符串比较、匿名对象、两种实例化方法的区别)

    String类不是一个基本数据类型,它是一个类,这个类设计过程种加入了Java的特殊支持,其实例化形式有两种形式:

    Winter_world
  • 这样规范写代码,同事直呼“666”

    当遇到多个查询条件,使用where 1=1 可以很方便的解决我们的问题,但是这样很可能会造成非常大的性能损失,因为添加了 “where 1=1 ”的过滤条件之后...

    xcbeyond
  • QQ小程序支付

    首先是配置类,设置为包内访问权限,其实应该放于properties文件,或者直接配置在xml中,偷了个懒直接写在了代码中

    WindrunnerMax
  • 当我遵循了这 16 条规范写代码,同事只对我说了三个字: 666

    Many of the happiest people are those who own the least. But are we really so ha...

    良月柒
  • 这样规范写代码,同事直呼“666”

    java思维导图

扫码关注云+社区

领取腾讯云代金券