c++ string 长度限制_面试中要会的String相关问题

本文详细介绍了Java中String类的相关知识,包括String的基本概念、不可变性、内存存储、String与StringBuffer/StringBuilder的区别、常用方法如intern()、equals()与'=='的比较、字符串连接与分割等。还探讨了在面试中常见的String问题,帮助求职者准备面试。
摘要由CSDN通过智能技术生成

在java面试中,String是面试官最喜欢问,甚至是最先问的问题.这是在考验你的基本功,也是考验你的能力.String都答不上来,下面就不用继续了.我总结一些String相关的试题,希望对大家在以后的面试中有帮助

be6e02e9e5bdba1d3b00d701f7603ac4.png

0.String是最基本的数据类型吗?

Java中基本数据类型包括byte,int,char,long,float,double,boolean,short一共八个;String是定义在 java.lang 包下的一个类。它不是基本数据类型。

1.String是否可以被继承?

不可以,因为String类似final类。

2.Java中的String a = "abc"和String a = new String("abc")的区别?

String a = "abc" 使用常量进行初始化,初始化后内存存储在String常量池中

String a = new String("abc") 创建字符串对象,JVM创建字符串对象但不存储于字符串池。

3.为什么字符串是不可变的?

因为String类似final类。

4.什么是String常量池?

字符串池是一个特殊的内存区域,与存储这些字符串常量的常规堆内存分开。这些对象在应用程序的生命周期中被称为字符串变量。

如:双引号直接创建的字串,String a = "abc",会将"abc"存储在该区域。

5.使用字符串初始化代码:String a = new String("abc");创建多少个对象?

上面一行代码将会创建1或2个字符串。如果在字符串常量池中已经有一个字符串“abc”,那么就只会创建一个“abc”字符串。如果字符串常量池中没有“abc”,那么首先会在字符串池中创建,然后才在堆内存中创建,这种情况就会创建2个对象了。

6.String类中intern()的作用?

调用该方法时,如果池已包含String与equals(Object)方法确定的此对象相等的字符串,则返回池中的字符串。否则,将此String对象添加到池中,并String返回对此对象的引用。

它遵循对于任何两个字符串s和t,s.intern()==t.intern()是true当且仅当s.equals(t)是true。意味着如果s和t都是不同的字符串对象并且具有相同的字符序列,则在两者上调用intern()将导致由两个变量引用的单个字符串池文字。

7.使用equals和'=='进行字符串比较的差异?

字串中equals是重写的一个方法,比较字符串中value字符数组中字符是否一致,即比较的是字符串的值,==不仅比较字符串的值,而且还比较两个字符串所在内存地址是否相同。

8.String StringBuffer StringBuilder 三者各自线程安全性如何?

String StringBuffer线程安全,StringBuilder非线程安全。

9.String,StringBuffer以及StringBuilder之间的区别?

String是值不可变类,每次在String对象上的操作都会生成一个新的对象;StringBuffer和StringBuilder则允许在原来对象上进行操作,而不用每次增加对象;StringBuffer是线程安全的,但效率较低,而StringBuilder效率最高,但非线程安全。

10.如何连接多个字符串。

String:通过解读Java API,可以知道Java为字符串连接运算提供特殊支持。 字符串连接是通过StringBuilder (或StringBuffer )类及其append方法实现的。

StringBuffer:使用append实现

StringBuilder:使用append实现。

11.如何分割一个String?

可以使用字串分隔函数:public String[] split(String regex),根据传入的正则字符串进行分割,注意,如果最后一位刚好有传入的字符,返回数组最后一位不会有空字符串。

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

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

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

13.String类中,字符串长度是否有限制?

可以看字符串类的源码,字符串使用char数组存放字符,该字符数组为定义最大长度,故,理论上来说String是没有长度限制的,限制的是你的内存有多大。

14.Java String “+”连接符拼接字符串原理?

String字符串拼接通过StringBuilder走中间过程,通过append方法实现。

程序有大量字符串拼接时,建议直接StringBuilder实现,就不需要底层new很多临时String对象了。注意null参与拼接时会变成字符串"null"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值