Java面试题(一) String相关

1.String是Java的基本数据类型吗?

不是,Java中基本的数据类型有八种:int,byte,char,short,long,float,boolean,char。String不是Java中的基本数据类型,它是一种引用类型。

Java为每一种基本类型提供了一种封装类,分别为Int,Byte,Char,Short,Float,Boolean,Char。

引用类型和原始类型具有不同的特征和行为,存储方式以及大小和速度。引用类型的默认值为null而基本类型的默认值跟具体类型有关。

引申:

String是final类型的,不允许被改变。它被放入常量池内,常量池是类在编译期间确定的,并且被保存再编译后的.class文件中,包括类和接口里面的常量,以及字符串常量。如下代码段:

String s1="abcde";

String s2="abcde";

String s3="abc"+"de";

System.out.println(s1==s2);

System.out.println(s2==s3);

的运行结果为 true true

我们知道==是对比对象存放的地址是否相同,而equal对比的是对象指向地址中的值是否相同。

Strings1="abcde"在运行时,jvm首先先检查string常量池中是否存在"abcde"这个字符串,如果存在则将该字符串的引用赋给s1,如果不存在,则在常量池中创建该对象,然后将该对象的的引用赋给s1,因此s1和s2再编译阶段已经被确定,指向的地址是相同的。

而Strings3="abc"+"de";中的"abc"和"de"都是常量,在编译阶段,被处理成"abcde",jvm可以在常量池中找到该字符串常量,因此s3指向的地址跟s1以及s2相同。

而使用new String创建的字符串,因为无法再编译阶段确定,所以不会被放入字符串常量池中。

String和StringBuffer的区别?

时间: 2024-07-29 14:38:37

Java面试题(一) String相关的相关文章

java面试题之----String的intern

When---什么时候需要了解String的intern方法: 面试的时候(蜜汁尴尬)!虽然不想承认,不过面试的时候经常碰到这种高逼格的问题来考察我们是否真正理解了String的不可变性.String常量池的设计以及String.intern方法所做的事情.但其实,我们在实际的编程中也可能碰到可以利用String.intern方法来提高程序效率或者减少内存占用的情况,这个我们等下会细说. What---String.intern方法究竟做了什么: Returns a canonical repr

java面试题全集(中)--Java Web和Web Service相关面试题

这部分主要是与Java Web和Web Service相关的面试题. 96.阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet. 补充:Sun Microsystems公司在1996年发布Servlet技术就是为了和CGI进行竞争,Servlet是一个特殊的Java程

java面试题,将String字符串转换成数字

题目要求:将String字符串转换成数字,不能用java自带的方法转换字符串,要求自己写一个atoi(String s),如果输入的不是数字则返回0. import java.util.Scanner; /** * Created by Dell on 2014/7/14. * * 面试题 * 将字符串转换成数字,不用java自带的方法 */ public class MianShi_01 { public static void main(String[] args) { Scanner in

Java 基础(四):从面试题看String

字符串介绍 String类是java.lang包中的一个类,是我们日常中使用的非常多的一个类,它不是基础数据类型,底层实现是字符数组来实现的: /** The value is used for character storage. */ private final char value[]; String类是由final修饰的,所以是无法被继承的,一旦创建了String对象,我们就无法改变它的值.因此,它是线程安全的,可以安全地用于多线程环境中. public final class Stri

java面试题String,StringBuilder,StringBuffer

面试的经历中,相信大家都经常被问到这三者的区别,说到String我相信绝大多数的人都会说:"String是不可变的,final修饰的",你会看到面试官微微猥琐一笑,接着问到:"final修饰的类就是不可变的吗,那StringBuilder和StringBuffer不是final修饰的?" 1. 先来说说String 看下JDK1.7 String成员变量的源码 /** * @author Lee Boynton * @author Arthur van Hoff *

Java String相关

一.String类的常用方法 1. int indexOf(String s) 字符串查找 2. int lastIndexOf(String str) 3. char charAt(int index) 获取指定索引位置的字符 4. String substring(int beginIndex) 获取子字符串 5. String substring(int beginIndex, int endIndex) 6. String trim() 去除空格 7. boolean startsWit

Java面试题全集(中)

这部分主要是与Java Web和Web Service相关的面试题. 96.阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet. 补充:Sun Microsystems公司在1996年发布Servlet技术就是为了和CGI进行竞争,Servlet是一个特殊的Java程

Java面试题下

这部分主要是开源Java EE框架方面的内容,包括hibernate.MyBatis.spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题,如果需要了解相关内容,可以参考我的另一篇文章<Java面试题集(86-115)>.此外,这篇文章还对企业应用架构.大型网站架构和应用服务器优化等内容进行了简单的探讨,这些内容相信对面试会很有帮助. 126.什么是ORM?答:对象关系映射(Object-Relational Mapping,简称OR

java面试题及答案

JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象.2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派