• 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()是方法,需要对象调用)

  • 相关阅读:
    SpreadJS 复制行
    RookeyFrame 模块 线上创建的模块 迁移到 线下来
    RookeyFrame 附件 上传附件
    RookeyFrame 字典 新增和绑定
    RookeyFrame Bug 表单管理 -> 查看表单 ->编辑字段页面 JS报错
    Catalan数
    美元汇率
    5倍经验日
    二分查找的边界问题
    线段覆盖5
  • 原文地址:https://www.cnblogs.com/jinziguang/p/11648895.html
Copyright © 2020-2023  润新知