首页 > 其他 > 详细

String知识点

时间:2021-03-09 22:20:21      阅读:24      评论:0      收藏:0      [点我收藏+]

String知识点

String面试题

String是不可变的有什么好处?

String是不可变类有以下几个优点

  • String不可变,所以线程安全。
  • 以String作为HashMap的key,String的不可变保证了hash值的不可变。
  • 因为java字符串是不可变的,可以在java运行时节省大量java堆空间。因为不同的字符串变量可以引用池中的相同的字符串。如果字符串是可变得话,任何一个变量的值改变,就会反射到其他变量,那字符串池也就没有任何意义了。

如何分割一个String?

用split()方法进行分割。

如何判断两个String是否相等?

有两种方式判断字符串是否相等,使用""或者使用equals方法。当使用""操作符时,不仅比较字符串的值,还会比较引用的内存地址。大多数情况下,我们只需要判断值是否相等,此时用equals方法比较即可。

还有一个equalsIgnoreCase可以用来忽略大小写进行比较。

String的intern()方法

当intern()方法被调用,如果字符串池中含有一个字符串和当前调用方法的字符串eqauls相等,那么就会返回池中的字符串。如果池中没有的话,则首先将当前字符串加入到池中,然后返回引用。

String是线程安全的吗?

String是不可变类,一旦创建了String对象,我们就无法改变它的值。因此,它是线程安全的,可以安全地用于多线程环境中。

为什么我们在使用HashMap的时候总是用String做key?

因为字符串是不可变的,当创建字符串时,它的它的hashcode被缓存下来,不需要再次计算。因为HashMap内部实现是通过key的hashcode来确定value的存储位置,所以相比于其他对象更快。这也是为什么我们平时都使用String作为HashMap对象。

String编程题

1、下面的代码输入什么

String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1 == s2);

输入false

2、下面的代码输入什么

String s1 = "abc";
StringBuffer s2 = new StringBuffer(s1);
System.out.println(s1.equals(s2));

输入false,因为s2不是String类型,String的equals方法进行了类型判断。

3、下面的代码输入什么

String s1 = "abc";
String s2 = new String("abc");
s2.intern();
System.out.println(s1 ==s2);

输出false,intern()方法将返回从字符串池中的字符串对象的引用,但因为我们没有分配到S2,S2没有变化,如果该第三行代码为s2 =

s2.intern(),则输入true。

4、下面的代码将创建几个字符串对象。

String s1 = new String("Hello");  
String s2 = new String("Hello");

答案是3个对象.

第一,行1 字符串池中的“hello”对象。

第二,行1,在堆内存中带有值“hello”的新字符串。

第三,行2,在堆内存中带有“hello”的新字符串。这里“hello”字符串池中的字符串被重用。

String知识点

原文:https://www.cnblogs.com/yu-si/p/14507222.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!