zoukankan      html  css  js  c++  java
  • String类_java

    String类常见题目:

    1.判断定义为String类型的s1和s2是否相等
    String s1="abc";
    String s2="abc";
    System.out.println(s1==s2); true
    //mian方法进栈,mian方法下有String s1和String s2,常量池有s1(“abc”),s2指向常量池同一个值(“abc”),所以s1==s2
    //常量池的特点:常量池中没有这个对象,就创建一个;有这个对象,就直接使用
    System.out.println(s1.equals(s2)); true,因为equals只比较对象的序列,都是abc所以一样。==号比较的是地址值。
    2.下面这句话在内存中创建了几个对象?
    String s1=new String("abc"); 2个
    2个,一个在常量池,一个在堆内存,两个地址值不一样
    3.判断定义为String类型的s1和s2是否相等
    String s1=new String("abc");
    String s2="abc";
    System.out.println(s1==s2); false,因为s1是堆内存的地址值,s2是常量池的地址值
    System.out.println(s1.equals(s2)); true
    4.判断定义为String类型的s1和s2是否相等
    String s1="a"+"b"+"c";
    String s2="abc";
    System.out.println(s1==s2); true。,在编译时就变成了"abc",java中有常量优化机制
    System.out.println(s1.equals(s2)); true
    5.判断定义为String类型的s1和s2是否相等
    String s1="ab";
    String s2="abc";
    String s3=s1+"c";
    System.out.println(s1==s2); false
    System.out.println(s1.equals(s2)); true

    延伸:

    "=="和equal()的区别:

    相同点:都可以做比较,返回值都是boolean

    区别:

    a.==是比较运算符,既可以比较引用数据类型,也可以比较基本数据类型。基本数据类型比较的是值,引用数据类型比较的是地址值(hashcode)。

    b.equal()未重写,依赖==,比较的是hashcode。重写后的equal比较的是对象的属性值。

    c.equal()只能比较引用数据类型(因为equal()是方法,需要对象调用)

  • 相关阅读:
    SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤
    SVN版本控制—branches、trunk、tag篇
    SVN将项目代码加入svn版本控制
    交换机详细解读
    ESXI
    vSphere
    VM虚拟机?
    Linux 01 LiunxvI命令大全
    “高可用性”(High Availability)??
    说一说,正常上线的流程
  • 原文地址:https://www.cnblogs.com/jinziguang/p/11648895.html
Copyright © 2011-2022 走看看