最近看到好多同学都在储备面试知识,以备来年轻松应对面试官,拿到心仪offer,之前好多同学反映遇到string,都只能送给自己一首凉凉。别凉,今天小编就为大家准备了面试中常遇到的string题,让你轻松愉快拿offer~
首先跟大家说说如何创建string~
创建字符串较简单的方式如下:
String str = "Runoob";
在代码中遇到字符串常量时,这里的值是 "Runoob"",编译器会使用该值创建一个 String 对象。
和其它对象一样,可以使用关键字和构造方法来创建 String 对象。
用构造函数创建字符串:
String str2=new string("Runoob");
String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上:
String s1 = "Runoob"; // String 直接创建
String s2 = "Runoob"; // String 直接创建
String s3 = s1; // 相同引用
String s4 = new String("Runoob"); // String 对象创建
String s5 = new String("Runoob"); // String 对象创建
字符串长度
用于获取有关对象的信息的方法称为访问器方法。
String 类的一个访问器方法是 length() 方法,它返回字符串对象包含的字符数。
连接字符串
String 类提供了连接两个字符串的方法:
string1.concat(string2);
返回 string2 连接 string1 的新字符串。也可以对字符串常量使用 concat() 方法。
创建格式化字符串
输出格式化数字可以使用 printf() 和 format() 方法。
String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象。
String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。
下面为大家讲讲在java程序员面试中常见的String题
1、String类型可以被继承吗?
不可以,因为String类型是final类型。
源码如下:
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence { //...... }
2、 String 和 StringBuilder、StringBuffer 的三者的区别是什么?
String 类型不可变类(immutable),所以在字符串拼接的时候如果使用 String 的话性能会很低,因此我们就需要使用另一个数据类型 StringBuffer,它提供了 append 方法和 insert 方法可用于字符串的拼接,它使用 synchronized 来保证线程安全。
3、String类型和JVM
String 常见的创建方式有两种,new String() 的方式和直接赋值的方式,直接赋值的方式会先去字符串常量池中查找是否已经有此值,如果有则把引用地址直接指向此值,否则会先在常量池中创建,然后再把引用指向此值;而 new String() 的方式一定会先在堆上创建一个字符串对象,然后再去常量池中查询此字符串的值是否已经存在,如果不存在会先在常量池中创建此字符串,然后把引用的值指向此字符串。
4、String类型是基础类型吗?
基本数据类型包括byte,int,char,long,float,double,boolean,short一共八个
Java.lang.String类是final类型的,因此不能继承,修改这个类.为了提高效率节省空间,应该用StringBuffer类。
5、String类型常用的方法有哪些?可以举例吗?
String类型有十几种,我常用的有以下 3种:
indexOf():查询字符串首次出现的下标位置
lastIndexOf():查询字符串最后出现的下标位置
contains():查询字符串中是否包含另一个字符串