不能错过的10道经典java string面试题
2023-03-26 16:41:52
随着互联网的快速发展,作为互联网背后的技术支持,程序员的职位也非常受欢迎,相应的主要公司对程序员职位的要求也越来越高,但即便如此,基本知识也是面试的关键内容。本文已被整理出来java string面试题,因为 属于stringjava编程语言中的字符串是面试时容易获得的基础知识和内容。让我们一起学习。
1、什么是String,它属于什么?java数据类型?
答:String被定义为 java.lang 包下一类。它不是基本的数据类型。String是不可变的,JVM使用字符串池存储所有字符串对象。
2、Stringintern()方法
答:当intern()调用方法。如果字符串池中包含一个字符串等于当前调用方法的字符串eqauls,则返回池中的字符串。如果池中没有,首先将当前字符串添加到池中,然后返回参考。
3、如何比较两个字符串?
答:comparable接口在String内实现,有两种比较方法。这两种方法是comparetoble(String anotherString) comparetoignorecase(String str)。
(1)compareTo(String anotherString):与传入的anotherstring字符串相比,如果小于传入的字符串返回负数,如果大于,则返回证书。当两个字符串值相等时,返回0。此时,eqauls方法将返回true。
(2)equalsIgnoreCase(String str):这种方法类似于compareto方法,区别在于内部使用character。.大小写转换后比较touperCase等方法。
4、String, StringBuffer,Stringbuilder的区别?
答:String是不可变的。每当我们操作String时,我们总是创建一个新的字符串。操作String需要大量的资源,因此Java提供两个工具类来操作String、 StringbufferStringBuilder。
Stringbuffer和Stringbuilder是可变类的,Stringbuilder是线程安全的,而Stringbuilder不是线程安全的。因此,当多线程操作相同的字符串时,我们应该选择使用Stringbuffer。因为它不需要处理多线程的情况,Stringbuilder的效率高于Stringbufer。
5、不可改变的String有什么好处?
答:String具有以下优点:(1)由于String是不可变的,因此在多线程中使用是安全的,我们不需要做任何其他同步操作。
(2)String是不可变的,其值不能改变,因此存储数据密码非常安全。
(3)由于java字符串是不可变的,因此在java运行过程中可以节省大量java堆空间。因为不同的字符串变量可以在池中引用相同的字符串。如果字符串可变,任何变量的值变化都会反射到其他变量,那么字符串池就没有意义了。
6、如何判断两个String等吗?
答:判断字符串是否相等有两种方法。"=="或者使用equals方法。使用时"=="操作符时,不仅要比较字符串的值,还要比较引用的内存地址。在大多数情况下,我们只需要判断值是否相等,然后用equals方法进行比较。
还有一个equalsignoreCase可以用来比较大小写。
String s1 = "abc";
String s2 = "abc";
String s3= new String("abc");
System.out.println("s1 == s2 ? "+(s1=s2); //true
System.out.println("s1 == s3 ? "+(s1=s3); //false
System.out.println("s1 equals s3 ? "+(s1.equals(s3))); //true
7、字符串池是什么?
答:字符串常量池用于存储字符串。它存在于它中java堆内存。下图解释了java堆空间中如何存在字符串池,以及当我们以不同的方式创建字符串时的情况。
8、有多少种方法可以创建字符串?
答:一般来说,有三种类型:通过通过构造方法创建new关键字;通过双引号“”;拼接创建字符串连接符+和其他字符串。
9、为什么在Java中存储密码要使用char[]而不是String?
答:因为String是不可改变的,当String创建时,它不会再改变。char[]是可变的,程序员可以在不留下任何原始数据的情况下更改它。因此,在使用密码时,通常使用char数组,如Javaswing中的JPaswordfield,获取密码框的值是使用char数据。而不是使用string。
10、substring()方法到底做了什么?
答:因为String是不可改变的,所以Substring在截取字符串时做了一些工作。在JDK6中,用一个字符数组来表示现有的字符串,然后在这个字符数组中截取字符串。截取后,没有创建新的字符数组。在JDK7中,截取的新字符串是一个新的数组,效率更快。因为垃圾回收器会回收不再使用的字符串。
其实前面还写过关于java字符串面试题的文章,大家可以相互对照着学习,上文就是总结的java 虽然string面试题只有10个,但是这10道java string面试题它包含了非常经典的知识点,可以说只要是在在java面试中考到 这10个问题肯定会出现string的内容。希望大家好好学习。 相关的string字符串知识,顺利通过面试。