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

  • 相关阅读:
    datasnap的监督功能【3】-TCP链接监督功能
    实体服务规则或值更新设置字段锁定性
    设置指定的单据视图
    启动或停止IIS
    SSMS2014清除登录记录
    未授予用户在此计算机上的请求登录类型
    采购合同手动下推采购订单提示没有NAME属性
    审批流消息中无法获取明细字段
    费用申请单反写费用合同提示第2行总金额超出,但是实际未超出
    调试手机端
  • 原文地址:https://www.cnblogs.com/jinziguang/p/11648895.html
Copyright © 2011-2022 走看看