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

    千次阅读 热门讨论 2016-12-30 15:39:27
    Java-String类常见面试题

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

       String s1="abc";
       String s2="abc";
       System.out.println(s1==s2);
       System.out.println(s1.equals(s2));

    运行结果为

       true
       true

    这里写图片描述

    ==比较基本数据类型的时候比较的是值,比较引用类型的时候比较的是地址值。这里是比较的引用类型。

    创建“abc”的时候先到常量池看看有没有,没有的话就创建一个,有的话就直接用。所以s1和s2的存的地址值相同,指向的是同一个。

    equals是Object中的方法,只能用于引用类型,也是比较的地址值。但String类重写了equals方法,来比较字符串是否相等。

    2.这句话在内存创建了几个对象

     String s1=new String("abc");

    答案是两个
    这里写图片描述
    执行“abc”的之后在常量池创建一个,new的时候在堆里创建一个,并把常量池中的“abc”复制了一份过去。然后将其引用赋给了s1。

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

       String s1=new String("abc");//堆内存的地址
       String s2="abc";//常量池的地址
       System.out.println(s1==s2);
       System.out.println(s1.equals(s2));

    运行结果为

       false
       true

    这里写图片描述

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

       String s1="ab";
       String s2="abc";
       String s3=s1+"c";
       System.out.println(s3==s2);
       System.out.println(s3.equals(s2));

    运行结果为

       false
       true

    这里写图片描述
    先通过StingBuffer将“ab”和“c”合并成“abc”,然后通过toString将其转换成字符串。
    Java 语言提供对字符串串联符号(”+”)以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。字符串转换是通过 toString 方法实现的,该方法由 Object 类定义,并可被 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)); //...

    String类相关面试题总结

    一、判断String类型的s1和s2是否相等        

            String s1 = "abc";
            String s2 = "abc";
            System.out.println(s1 == s2);   //true

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

            原因:常量池中如果没有这个字符串对象就创建一个,如果有就总结用。


    二、下面这句话创建了几个对象

                 String s1 = new String("abc"); //创建了两个对象,一个在常量池中,一个在堆内存中

                

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

                 String s1 = new String("abc");
                 String s2 = "abc";
                 System.out.println(s1 == s2);   //false

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

                 原因:s1记录的是堆内存中对象的地址,s2记录的是常量池中的地址

    四、判断定义为String类型的s1和s1是否相等

                 String s1 = "a" + "b" + "c";
                 String s2 = "abc";
                 System.out.println(s1 == s2);        //true
                 System.out.println(s1.equals(s2));   //true

                 原因:java中有常量优化机制,编译时就把 "a" + "b" + "c"变成“abc”赋值给s1

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

                 String s1 = "ab";
                 String s2 = "abc";
                 String s3 = s1 + "c";
                 System.out.println(s3 == s2);            //false
                 System.out.println(s3.equals(s2));       //true

            原因:




    展开全文
  • 有关于 String 面试题

    千次阅读 2018-07-11 18:17:27
    上次写了关于 String 的一些方法今天我们来做一些关于 String 面试题关于 String类 的常见面试题1)判断String类型的 s1 和 s2 是否相...

    上次写了关于 String 类的一些方法

    今天我们来做一些

    关于 String 类的面试题


    关于 String类 的常见面试题


    1)判断String类型的 s1 和 s2 是否相等


    640?wx_fmt=png


    equals() 方法比较的是字符串的内容~所以结果是 true 很好理解,至于 str1==str2  的结果也是 true ,是因为在 Java 的内存的方法区中有一块区域叫做常量池,str1 =“abc” 时,常量池中没有 “abc”,所以就 new 一个 “abc” 当运行 str2 = “abc” 时,常量池中存在 “abc” ,系统就会把 常量池中的 “abc” 的引用直接给 str2 所以 str1==str2 的结果为 true,因为它们的引用是一样的~


    2)判断String类型的 s1 和 s2 是否相等


    640?wx_fmt=png


    这个和上一题很像,但是 str1 是 new string() ,在 Java 中,new 一个对象就会在内存的堆中开辟一块空间,然后把引用赋值给 str1 ,一个是堆中的引用,一个是常量池中的引用所以,str1==str2 的结果为 false~~


    3)判断String类型的 s1 和 s2 是否相等


    640?wx_fmt=png


    这个 str1==str2 为何为 true 小伙伴们知道吗?嘿嘿因为在Java中有一种叫做常量优化的机制,我们在赋值的时候 “a”,“b”,“c”都是常量,系统及直接把 abc 赋值给 str1 了,这时候常量池中也就存在 “abc” 了,所以str1==str2 


    4)判断String类型的 s1 和 s2 是否相等


    640?wx_fmt=png


    那么这里呢?通过查找API我们可以得到这样一段话~ 『Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。字符串转换是通过 toString 方法实现的...』


    也就是说当执行 str3=str1+c 的时候,首先在堆中生成一个StringBuilder(或StringBuffer)对象,然后把 ab 和 c 连接在一起 ,再利用 toString 方法生成一个 “abc”的字符串 再来进行比较..str2 的 “abc” 在常量池中,str3 在堆中所以为false~


    一个 str1==str2 就玩了这么多花样

    真会玩~~

    我们在玩点别的


    模拟登陆


    需求:

    给三次机会,并且提示还有几次

    分析:

    1)需要键盘输入账户名和密码

    2)需要进行循环判断


    640?wx_fmt=jpeg


    代码:


    
     

    public class Test1 {

     public static void main(String[] args{
       Scanner in = new Scanner(System.in);
       for(int i=0; i<3; i++){
         System.out.println("请输入用户名");
         String userName = in.nextLine();
         System.out.println("请输入密码");
         String password = in.nextLine();
         if ("admin".equals(userName)&&"admin".equals(password)) {
           System.out.println("欢迎"+userName+"!!!");
           break;
         }else{
           System.out.println("用户名或密码错误~~");
           System.out.println("还有"+(2-i)+"次机会");
         }
       }  
     }
    }


    今天就到这了

    拜拜

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

    千次阅读 多人点赞 2018-07-26 10:07:09
    equals只能比较引用数据类型,如果没有重写Object中的equals方法,equals方法和==号比较引用数据类型无区别 ,重写后的equals方法比较的是对象中的属性。 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";

     

    展开全文
  • 最新Java面试题,常见面试题及答案汇总

    万次阅读 多人点赞 2019-07-12 08:56:55
    Java最新面试题面试题答案汇总
  • String类常见面试题

    千次阅读 多人点赞 2019-05-01 13:44:47
    答案解释:String类代表字符串,字符串是常量,常量需要进入到内存中的方法区的常量池(进入常量池规则:如果常量池中没有这个常量,就创建一个,如果有就不再创建了)。所以s1首先会在常量池中创建“abc”对象,“abc...
  • java String常见面试题

    千次阅读 2018-02-11 15:01:09
    最近在看java基础知识时,看到一些有关String面试题,发现有许多有关string的知识点理解不够透彻。在此结合一些常见面试题做一下记录 创建几个对象 实例代码: public static void testString1(){ //此句...
  • Java String常见面试题汇总

    千次阅读 2016-03-26 11:41:28
    String类型的面试题 1. String是最基本的数据类型吗? 基本数据类型包括byte,int,char,long,float,double,boolean,short一共八个. Java.lang.String类是final类型的,因此不能继承,修改这个.为了提高...
  • java中String类的笔试面试题含答案 1.下面程序的运行结果是()(选择一项) String str1=”hello”; String str2=new String(“hello”); System.out.println(str1==str2); A. true B. false C. hello D. he 答案...
  • 关于String面试题

    千次阅读 2019-01-26 16:43:04
    1.以下代码分别创建了几个对象 String str1 = “123”;String str2 = new String(“123”):; 我们先来看下面这张图 ...再来看这一道 所以我们知道,“123”这个常量是存储在方法区的常量池中的...
  • JAVA --String类笔试面试题

    千次阅读 2012-03-06 13:02:24
    转自:http://jingbo2759.blog.163.com/blog/static/98375315200971731522144/   ...   JAVA基础面试题     字符串对象是一种特殊的对象.String类是一个不可变的..也就说,String对象一旦创建就不允许修改
  • java中那些关于String面试题

    千次阅读 2017-08-18 18:20:01
    1、String是基本数据类型吗?String是java lang包下的一个,不像基本数据类型int long等。...在java中,所有基本类型的包装,如Integer和Long,都是不可变,java.lang.String也是不可变,虽然他不是基本
  • 【摘要】在常见的面试场景中,如果面试官想要考察你对于C++的掌握程度 能够很完整的写出一个string类是很重要的。因为string类包含了C++的 很多知识,可以系统的将你的知识发挥出来。在这篇博客中,我将会详细地 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 187,735
精华内容 75,094
关键字:

string类面试题