`

A面试题

阅读更多

今天遇到几道变态题:

 

1.true or false?

  

Java代码 复制代码
  1. String a = "ab";   
  2. String b = "a" + "b";   
  3. System.out.println(a==b);  
		String a = "ab";
		String b = "a" + "b";
		System.out.println(a==b);

 2.true or false?

   

Java代码 复制代码
  1. String a = "abc";   
  2. String b="ab";   
  3. String c=b+"c";   
  4. System.out.println(a==c);  
		String a = "abc";
		String b="ab";
		String c=b+"c";
		System.out.println(a==c);

 

 3.true or false

   

Java代码 复制代码
  1. String a = "ab1";   
  2. String b = "ab"+1;   
  3. System.out.println(a==b);  
		String a = "ab1";
		String b = "ab"+1;
		System.out.println(a==b);

 4.ture or false?

  

Java代码 复制代码
  1. String a = "ab1";   
  2. String b = "ab"+1;   
  3. String c = b + "";   
  4. System.out.println(a==c);  
		String a = "ab1";
		String b = "ab"+1;
		String c = b + "";
		System.out.println(a==c);

 

 5.true or false?   false

  

Java代码 复制代码
  1. String a = new String("abc");   
  2. String b = "abc";   
  3. System.out.println(a==b);  
		String a = new String("abc");
		String b = "abc";
		System.out.println(a==b);

 6.true or false?  true

  

Java代码 复制代码
  1. String a = "abc";   
  2. String b = "abc";   
  3. System.out.println(a==b);  

 

String包含几种不同的创建方式,并且不同的创建方式都会将String存到入不同的区域内,例如:String池 或者 java堆中。其中有一些原理,只要懂这些原理。以上的问题都不是问题。
原理1:当使用任何方式来创建一个字符串对象s时,Java运行时(运行中JVM)会拿着这个X在String池中找是否存在内容相同的字符串对象,如果不存在,则在池中创建一个字符串s,否则,不在池中添加。

       原理2:Java中,只要使用new关键字来创建对象,则一定会(在堆区或栈区)创建一个新的对象。

       原理3:使用直接指定或者使用纯字符串串联来创建String对象,则仅仅会检查维护String池中的字符串,池中没有就在池中创建一个,有则罢了!但绝不会在堆栈区再去创建该String对象。

       原理4:使用包含变量的表达式来创建String对象,则不仅会检查维护String池,而且还会在堆栈区创建一个String对象。

 

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    a面试题1(主要看这文档).docx

    a面试题1(主要看这文档)

    c++面试题面试题面试题面试题

    根据给定的信息,我们可以整理出一系列与C++相关的面试题及知识点解析,下面将逐一进行详细阐述。 ### C++ 面试题知识点解析 #### 1. 预处理器指令 预处理器是编译器执行的第一步,在实际编译之前处理源代码。预...

    模拟IC面试题analog面试题.doc

    模拟IC面试题 analog面试题.doc 在这个模拟IC面试题中,我们可以总结出以下几个重要的知识点: 1. Op-Amp 结构比较 在这个问题中,我们需要比较三种不同的 Op-Amp 结构:2-stage op-amp (active load, class-A ...

    c# winform面试题

    "C# Winform 面试题详解" C# Winform 面试题详解 1. foreach 遍历访问的对象需要实现 IEnumerable 接口或声明 GetEnumerator 方法的类型 在 C# 中,foreach 语句可以遍历实现了 IEnumerable 接口或声明了 ...

    Objective-C经典面试题

    在Objective-C领域,面试题往往涵盖C语言基础、Objective-C语言特性以及iOS相关知识。本次整理的“Objective-C经典面试题”中的知识点,主要针对C语言中的指针概念、Objective-C语言的数组和指针操作、宏定义及使用...

    C语言程序设计面试题

    C 语言程序设计面试题 本资源提供了 C 语言程序设计面试题,涵盖了预处理指令、宏定义、预处理器、嵌入式系统、死循环、数据声明等多个方面的知识点。通过这些面试题,可以考察应试者的 C 语言基础知识、编程能力和...

    Socket编程面试题

    Socket 编程面试题 TCP 和 UDP 的区别: 1. 连接方式:TCP 提供面向连接的传输,通信前需要建立连接(三次握手机制);UDP 提供无连接的传输,通信前不需要建立连接。 2. 可靠性:TCP 提供可靠的传输(有序、无...

    android framework面试题集

    Android Framework 面试题集学习指南 一、Android 应用性能分析 Android 应用性能分析是指对 Android 应用程序的性能进行测量、评估和优化的过程。主要关注两个方面:响应速度和 UI 刷新速度。可以使用 Android ...

    sql面试题很详细的sql语句面试题

    SQL面试题详解 本资源旨在总结和详细解释SQL面试题中的各种问题和解决方案,并对每个问题进行了详细的解释和分析。 一、查询每门课都大于80分的学生姓名 问题:使用一条SQL语句查询出每门课都大于80分的学生姓名...

    C++面试题点播一

    1. C++基础知识面试题的分析 在文件中提到的第一个面试题,需要分析一个C++程序,并预测其运行结果。此题涉及到C++的构造函数、虚函数和多态的原理。给出的程序示例中,存在一个多态的例子,其中基类A定义了一个虚...

    71道经典Android面试题和答案

    根据提供的文件内容,以下是详细的知识点总结: 1. 内存回收说明: - 在Android中,程序员不能直接控制内存的释放,内存回收是由垃圾回收器...在实际应用和面试准备中,还需针对完整的问题和知识点进行复习和理解。

    单片机面试题大公司的一些面试题

    单片机面试题大公司的一些面试题 本资源摘要信息涵盖了单片机系统的主要组成模块、数据流流向和控制流流向、单片机应用系统的设计原则、8031与2716的连线图、8051设计键盘加驱动数码管的原理图、PCI总线的含义和...

    flex 面试题flex

    【Flex面试题】Flex面试题主要涵盖Flex的基础概念、开发框架、MVC模式的应用、内存管理、垃圾回收机制、前端性能优化以及与后端通信等多个方面。以下是对这些知识点的详细解析: 1. AS2与AS3的区别: AS2...

    深圳各公司java面试题

    ### 深圳各公司Java面试题精要解析 #### 中联宏达 - Struts面试题解析 **1. 如何定义FormBean?** FormBean是Struts框架中用于封装表单数据的类,通常继承自`org.apache.struts.action.ActionForm`。定义FormBean...

    BAT各大互联网面试题

    ### BAT各大互联网面试题知识点详解 #### 一、设置DOM元素CSS样式的三种方式 1. **外部样式表**:通过`<link>`标签引入一个外部的CSS文件,这种方式适用于多个页面共享相同的样式规则,有利于代码复用和维护。 ``...

    java中级面试题(自己汇总)

    "java中级面试题(自己汇总)" 本文总结了Java中级面试题,涵盖了集合、HashMap、HashSet、HashTable、ConcurrentHashMap、红黑树、Java 8对HashMap的优化、LinkedHashMap、TreeMap、IdentityHashMap等知识点。 ...

Global site tag (gtag.js) - Google Analytics