• Android(java)学习笔记37:String类型的面试题


    1. String类型面试题:

     1 package cn.itcast_02;
     2 
     3 /*
     4  * String s = new String(“hello”)和String s = “hello”;的区别?
     5  * 有。前者会创建2个对象,后者创建1个对象。
     6  * 
     7  * ==:比较引用类型比较的是地址值是否相同
     8  * equals:比较引用类型默认也是比较地址值是否相同,而String类重写了equals()方法,比较的是内容是否相同。
     9  */
    10 public class StringDemo2 {
    11     public static void main(String[] args) {
    12         String s1 = new String("hello");
    13         String s2 = "hello";
    14 
    15         System.out.println(s1 == s2);// false
    16         System.out.println(s1.equals(s2));// true
    17     }
    18 }


    "hello" 这个字符串属于在字符串常量区的对象

    过程图:

     

     下面看程序,结果:

    package cn.itcast_02;
    
    /*
     * 看程序写结果
     */
    public class StringDemo3 {
        public static void main(String[] args) {
            String s1 = new String("hello");
            String s2 = new String("hello");
            System.out.println(s1 == s2);// false
            System.out.println(s1.equals(s2));// true
    
            String s3 = new String("hello");
            String s4 = "hello";
            System.out.println(s3 == s4);// false
            System.out.println(s3.equals(s4));// true
    
            String s5 = "hello";
            String s6 = "hello";
            System.out.println(s5 == s6);// true
            System.out.println(s5.equals(s6));// true
        }
    }

     测试类:

     1 package cn.itcast_02;
     2 
     3 /*
     4  * 看程序写结果
     5  * 字符串如果是变量相加,先开空间,在拼接。
     6  * 字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。
     7  */
     8 public class StringDemo4 {
     9     public static void main(String[] args) {
    10         String s1 = "hello";
    11         String s2 = "world";
    12         String s3 = "helloworld";
    13         System.out.println(s3 == s1 + s2);// false
    14         System.out.println(s3.equals((s1 + s2)));// true
    15 
    16         System.out.println(s3 == "hello" + "world");// false 这个我们错了,应该是true
    17         System.out.println(s3.equals("hello" + "world"));// true
    18 
    19         // 通过反编译看源码,我们知道这里已经做好了处理。
    20         // System.out.println(s3 == "helloworld");
    21         // System.out.println(s3.equals("helloworld"));
    22     }
    23 }

     

  • 相关阅读:
    NET在后置代码中输入JS提示语句(背景不会变白)
    corev4.css 左菜单修改CSS
    寺庙里的那点荡事儿
    sharepoint 2010中通过命令部署和卸载FEATURE
    定时任务 Timer JOB
    获取MOSS个人站点的SPWeb对象
    C#对Active Directory进行增删修查的类源码
    权限操作
    在SharePoint中,检验用户(SPUser)是否属于给定的组(SPGroup)的方法(代码)
    DirectoryEntry所有字段对应解释
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4547792.html
Copyright © 2020-2023  润新知