精华内容
下载资源
问答
  • 主要介绍了Java常用类String面试题汇总,非常不错,具有参考借鉴价值,需要的朋友可以参考下
  • String相关面试题

    2017-07-29 19:29:38
    String 是基本数据类型吗? String s1=”abc”; String s2=”abc”; System.out.println(s1==s2); System.out.println(s1.equals(s2)); ==号即可有比较基本数据类型又可以比较引用数据类型,引用类型比较的是地址...
    1. String 是基本数据类型吗?

    2. String s1=”abc”;
      String s2=”abc”;
      System.out.println(s1==s2);
      System.out.println(s1.equals(s2));
      ==号即可有比较基本数据类型又可以比较引用数据类型,引用类型比较的是地址值。equals比较的是字符序列相同。
      第一个输出返回true,第二个输出返回true
      这里写图片描述
      String类型每次创建的时候都回去常量池看一下,看是否有这个值,没有的话创建,然后指向这个地址,如果有这个值了,不会重新创建,只会再次指向它的地址,如图所示,所以==返回的也是true。

    3. 下面这句话在内存中创建了几个对象
      String s1=new String(“abc”);
      这里写图片描述
      这个过程中创建了两个对象, String(“abc”)在常量池中创建了一个,new String(“abc”)在堆内存中又new了一个。常量池中的地址值和堆内存中的地址值肯定不同。

    4. String s1=new String(“abc”);
      String s2=”abc”;
      System.out.println(s1==s2);
      System.out.println(s1.equals(s2));
      ==因为地址都不一样,返回false,s1记录的是堆的地址值,s2记录的是常量池中的地址值。
      equals序列值一样,返回true。

    5. String s1=”a”+”b”+”c”;
      String s2=”abc”;
      System.out.println(s1==s2);
      System.out.println(s1.equals(s2));
      ==返回的也是true,java中有常量优化机制,在编译时候”a”+”b”+”c”直接在常量池中创建abc了。
      equals序列值一样,返回true。

    6. String s1=”ab”;
      String s2=”abc”;
      String s3=s1+”c”;
      System.out.println(s3==s2);
      System.out.println(s3.equals(s2));
      equals返回的仍然是true,字符序列仍然不变。
      ==是false
      任何数据与加号相连接后都会产生新的字符串。字符串串联是通过StringBuffer或者StringBuilder及其append方法来实现的。StringBuffer字符串的缓冲区。字符串转换是通过toString方法实现。
      这里写图片描述
      如图所示s3记录的是堆内存地址,s2记录的是常量池地址

    7. 获取一个字符串某种字符的个数:s=”asAC12341&&”
      char c=s.charAt(i);

    展开全文
  • java String类常见面试题

    千次阅读 多人点赞 2018-07-26 10:07:09
    基础知识: 1、==:既可以比较基本数据类型,又可以比较引用数据类型。基本数据类型比较的是值,引用数据类型比较的是地址。...2.字符串常量存储在常量池,而new String 创建对象,在编译期间不能确定具体的...

     基础知识:

    1、==:既可以比较基本数据类型,又可以比较引用数据类型。基本数据类型比较的是值,引用数据类型比较的是地址。

    equals只能比较引用数据类型,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别   ,重写后的equals方法比较的是对象中的属性。

    2.字符串常量存储在常量池,而new String 创建对象,在编译期间不能确定具体的值,所以会在 在在内存中创建的一个地址。 所以下面的第三题用等号比较的两个地址不同,但是属性是相同的,所以用equals比较的是属性值,所以相同。

     

     

     

    1.判断定义为String类型的s1s2是否相等

    * String s1 = "abc";

    * String s2 = "abc";

    * System.out.println(s1 == s2);                 //true ,比较地址值,都在常量池,相等

    * System.out.println(s1.equals(s2));             //true,equals中,先判断两个对象的地址值,地址值相同,默认就是同一个对象,不会继续equalse中的具体值是否相等的判断了,直接会返回true。

     2.下面这句话在内存中创建了几个对象?

    * String s1 = new String("abc");                      //两个对象 :abc在常量池,有自己的地址。 new String 创建                                           对象,在编译期间不能确定具体的值,所以会在 在在内存中创建的一个地址。

     

    3.判断定义为String类型的s1和s2是否相等

    * String s1 = new String("abc");

    * String s2 = "abc";

    * System.out.println(s1 == s2); //false

    * System.out.println(s1.equals(s2));    //true

     

    4.判断定义为String类型的s1s2是否相等

    * String s1 = "a" + "b" + "c";

    * String s2 = "abc";

    * System.out.println(s1 == s2);          //true         地址值相同,都是常量,在常量池里面        

    * System.out.println(s1.equals(s2));                //true         地址值相同,默认同一个对象,值当然也是相等的。

     

    5.判断定义为String类型的s1s2是否相等

    * String s1 = "ab";

    * String s2 = "abc";

    * String s3 = s1 + "c";

    * System.out.println(s3 == s2);               //false   不相等,s1是变量,编译的时候确定不了值,在内存中会创建值,s3在堆内存中,。s2在常量池,所以不相等。

    * System.out.println(s3.equals(s2));      //true   比较两个对象的值相等。

     

    解释:这就关系到底层的运行图了

    * String s1 = "abc";

    String s2 = "abc";

    s1会在常量池中创建,s2先查看常量池中有没有,如果有的话就指向它,如果没有就在常量池中创建一个然后指向它。所以s1和s2的两种比较是相同的。

    * String s2 = "abc";

     

    展开全文
  • 关于String面试题

    千次阅读 2019-01-26 16:43:04
    编译常量池:当字节码加载进jvm的时候,存储字节码相关的信息 2;运行常量池:存储常量数据 String str1 = "123"再来看这一道 所以我们知道,“123”这个常量是存储在方法区的常量池中的...

    1.以下代码分别创建了几个对象

    String str1 = “123”;String str2 = new String(“123”):;
    我们先来看下面这张图
    在这里插入图片描述
    我们先说常量池,常量池分为
    1;编译常量池:当字节码加载进jvm的时候,存储字节码相关的信息
    2;运行常量池:存储常量数据
    String str1 = "123"再来看这一道题
    所以我们知道,“123”这个常量是存储在方法区的常量池中的,当我们栈中的str1想用"123"这个常量的时候,会想去方法区中的常量池找,看有没有"123"这个常量,如果有那就直接饮用这个常量的内存地址,然后传递这个值让str1去用,但是如果常量池中没有"123"这个常量,那么就会新创建一个常量"123"并赋给str1
    所以String str1 = “123”,最少创建0个对象,最多创建1个对象

    再来看这道题
    ;String str2 = new String(“123”):
    我们知道,new出来的对象时在堆空间中开辟的,所以能new 的时候,一定会在堆空间中创建一个对象,当这个对象创建好了后,他就会去常量池中寻找是否有"123"这个常量,如果有,就会直接引用这个内存地址传递值,如果没有就会重新创建“123”常量

    所以String str2 = new String(“123”):至少会创建一个对象,最多创建两个对象
    在这里插入图片描述

    2.判断下面对象之间是否相等

    String str1 = “123”;
    String str2 = new String(“123”):
    String str3= “1” +“2”+“3”;
    String s = “12”;
    String str4 = s+“3” ;
    String str5 = getNum()+“3” ;
    public static String getNum(){
    return “12”;
    }
    我们先来测试一下
    在这里插入图片描述
    str1str2
    这道题与第一道题相似,str1引用的是常量池的内存地址,str2引用的是堆空间的内存地址,自然不相等
    str1
    str3
    这道题为什么是正确的呢,这是由于编译器优化,当我们查看编译后的字节码文件反编译后的原文件时,会发现,编译器在编译的时候"1" + “2” + “3"优化成了"123”,所以str3引用的也是常量池中"123"的内存地址,故相等
    在这里插入图片描述
    str1str4
    str1
    str5
    这两道题都是一样的,我们知道变量和方法只有在运行时期才会确定他们的值,在编译时期只会检查语法是否正确,故这两个题的答案都为false
    在这里插入图片描述

    展开全文
  • String类常见面试题

    千次阅读 多人点赞 2019-05-01 13:44:47
    1.判断定义为String类型的s1和s2是否相等? 答案解释:String类代表字符串,字符串是常量,常量需要进入到内存中的方法区的常量池(进入常量池规则:如果常量池中没有这个常量,就创建一个,如果有就不再创建了)。...

    1.判断定义为String类型的s1和s2是否相等?

    答案解释:String类代表字符串,字符串是常量,常量需要进入到内存中的方法区的常量池(进入常量池规则:如果常量池中没有这个常量,就创建一个,如果有就不再创建了)。所以s1首先会在常量池中创建“abc”对象,“abc”对象是有地址值的,“abc”对象将地址值赋给s1。当s2的时候,此时常量池中已经存在了“abc对象”,所以就不需要再创建了,s2的引用也指向了常量池中的“abc”对象,两个引用指向了同一个对象,s1和s2地址值一样,所以==号比较的时候返回true;String类重写了equals方法,比较的是属性值,s1和s2的属性值都是“abc”,所以是true

     

    2.下面这句话在内存中创建了几个对象?

    String s = new String("abc");

    答案及解释:2个对象。s首先会在常量池创建“abc”字符串常量,当new的时候就会在堆内存中创建一个对象,此时会把常量池中的字符串常量拷贝一份副本到给到堆内存中的对象,堆内存中的这个对象就会把地址值赋给s。常量池中对象的地址值和堆内存中对象的地址值是不一样的,s指向的是堆内存中的对象,不是常量池中的对象。此时堆内存中有一个对象,常量池中有一个对象,所以创建了2个对象。查看API,String的有参构造

     

    3.判断定义为String类型的s1和s2是否相等?

    答案解释:由面试题2可知,当执行完s1的时候,内存中会有两个对象,一个在堆内存,一个在常量池,且地址值是不一样的,s1指向的是堆内存中的对象,而当执行到s2的时候,s2指向的是常量池中的对象,地址值不一样,所以==号判断的时候返回false。s1和s2的属性值是一样的,所以equals方法比较时返回true

     

    4.判断定义为String类型的s1和s2是否相等?

    答案解释:Java中有常量优化机制,“a”、“b”、“c”本身就是字符串常量,所以在编译时,"a"+"b"+"c"就是“abc”字符串,所以就在常量池创建了“abc”字符串,当执行s2的时候,此时常量池中已经存在了“abc”,所以==号比较返回true。equals方法比较毫无疑问是true。

     

    5.判断定义为String类型的s3和s2是否相等?

    答案解释:s1+"c"中s1不是常量,所以不能有常量优化机制来分析。equals方法比较毫无疑问是true。

    1. s1和s2会分别在常量池中创创建"ab"、"abc"两个对象
    2. s3的时候是字符串串联,API解释如下图。所以s3的时候会在对内存中创建StringBuilder(或者StringBuffer)对象,通过append方法拼接成“abc”对象,此时的“abc”是StringBuilder(或者StringBuffer)类型的,通过调用toString方法转成String对象,此时s3指向的是堆内存中这个String对象
    3. s2指向的是常量池中的对象,s3指向的是堆内存中的对象,所以==号比较返回false

    展开全文
  • 主要介绍了JAVA中String介绍及常见面试题,在java面试中经常会被面试官问到,小编通过实例代码相结合给大家详细介绍,需要的朋友可以参考下
  • 主要介绍了java String校招面试题过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了JAVA面试题 String s = new String("xyz");产生了几个对象?,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Java String 面试题以及答案

    千次阅读 多人点赞 2017-12-08 15:25:23
    String是最常使用的Java类之一,整理的了一些重要的String知识分享给大家。 作为一个Java新手程序员,对String进行更深入的了解很有必要。如果你是有几年Java开发经验,可以根据目录选择性的阅读以下内容。
  • String相关面试题总结

    千次阅读 2018-07-03 16:31:22
    String相关面试题总结一、判断String类型的s1和s2是否相等 String s1 = "abc"; String s2 = "abc"; System.out.println(s1 == s2);  //true System.out.println(s1.equals(s2)); //...
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    Java面试总结(2021优化版)已发布在个人微信公众号【技术人成长之路】,优化版首先修正了读者反馈的部分答案存在的错误,同时根据最新面试总结,删除了低频问题,添加了一些常见面试题,对文章进行了精简优化,欢迎...
  • java中String类的笔试面试题含答案 1.下面程序的运行结果是()(选择一项) String str1=”hello”; String str2=new String(“hello”); System.out.println(str1==str2); A. true B. false C. hello D. he 答案...
  • C++ 的一个常见面试题是让你实现一个 String 类,限于时间,不可能要求具备 std::string 的功能,但至少要求能正确管理资源
  • 首先来看一到面试题,不管你能不能答上来,我都相信你能够在这篇文章学到一些你以前不知道的知识 String s1 = "a"; String s2 = "b"; String s3 = "a" + "b"; String s4 = s1 + s2; String s5 = "ab"; String s6 = ...
  • 这篇来看看关于Java String类的5道面试题,这五道题,我自己在面试过程中亲身经历过几道题目,学完了这篇,我才焕然大悟,才知道为什么是这个答案,本篇就带你了解这些题的答案为什么是这样。 1.判定定义为String...
  • **需要实现:**构造函数, 拷贝构造函数,复制运算符,析构函数,size函数等等。 主要思路:用cstring的一些库函数来实现。 底层的数据结构char* ...string> #include <vector> #include<cmath>...
  • String面试题

    2019-12-01 17:14:08
    package comC; public class StringTest1 { public static void main(String[] args) { ...// String a=new String("aaa"); // String b=new String("aaa"); // 二. // String a="aaa"; // String b=ne...
  • JAVA中String介绍以及常见面试题

    千次阅读 2020-02-25 21:44:46
    深刻认识String 1)String为字符串常量:即String对象一旦创建之后该对象是不可更改的。(源码如下) String str1 = "abc"; String str2 = "abc"; String str3 = new String("abc"); System.out.println(str1 ...
  • 本文主要介绍了C/C++面试题:编写类String的构造、析构和赋值函数,解析构造函数、析构函数和赋值函数的编写方法
  • 有关于 String 类的面试题

    千次阅读 2018-07-11 18:17:27
    上次写了关于 String 类的一些方法今天我们来做一些关于 String 类的面试题关于 String类 的常见面试题1)判断String类型的 s1 和 s2 是否相...
  • 【摘要】在常见的面试场景中,如果面试官想要考察你对于C++的掌握程度 能够很完整的写出一个string类是很重要的。因为string类包含了C++的 很多知识,可以系统的将你的知识发挥出来。在这篇博客中,我将会详细地 ...
  • 框架面试题

    2019-02-27 14:25:36
    框架面试题,集合了String,struts2,springmvc。 足以满足初级面试
  • 1. 什么是SpringMVC? SpringMVC是一种基于 Java 的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于Spring框架的一个...String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"u
  • java中那些关于String面试题

    千次阅读 2017-08-18 18:20:01
    1、String是基本数据类型吗?String是java lang包下的一个类,不像基本数据类型int long等。 String是引用数据类型,不是基本数据类型。2、String是可变的吗?所谓不可变类,是指当创建了这个类的实例后,就不允许...
  • 点击上方Java后端,选择设为星标优质文章,及时送达这篇来看看关于Java String类的5道面试题,这五道题,我自己在面试过程中亲身经历过几道题目,学完了这篇,我才焕然大悟,才...
  • Java面试题_String 相加

    千次阅读 2021-04-08 09:19:40
    String s1 = “a”; String s2 = s1 + “b”; String s3 = “a” + “b”; System.out.println(s2 == “ab”); System.out.println(s3 == “ab”); 答: 第一条语句打印的结果为false,(1分) 第二条语句打印的...
  • 10个Java经典的String面试题!.zip
  • 要说Java中什么哪个类用的最频繁,要数String类了。关于String 、StringBuffer、StringBuilder是有必要详细研究一下的。 从String类源码中了解String 根据源码,可以得到: String类是final类,表示终态类,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 193,584
精华内容 77,433
关键字:

string相关的面试题