zoukankan      html  css  js  c++  java
  • java中String的==和equals的区别

    首先看代码1:

        public static void main(String[] args) {
            List<String> list=new ArrayList<String>();
            for(int i=0;i<99999999;i++){
                String a="ssss";
                list.add(a);
            }
            long t1=System.currentTimeMillis();
            for(int i=0;i<99999999;i++){
                //if(list.get(i).equals("ssss"));
                if(list.get(i)=="ssss");
            }
            long t2=System.currentTimeMillis();
            System.err.println("运行时间:"+(t2-t1));
            
            }

    运行时间:43

    代码2:

    public static void main(String[] args) {
            List<String> list=new ArrayList<String>();
            for(int i=0;i<99999999;i++){
                String a="ssss";
                list.add(a);
            }
            long t1=System.currentTimeMillis();
            for(int i=0;i<99999999;i++){
                if(list.get(i).equals("ssss"));
                //if(list.get(i)=="ssss");
            }
            long t2=System.currentTimeMillis();
            System.err.println("运行时间:"+(t2-t1));
            
            }

    运行时间:66

    区别:

    1.==对比的是常量池中的地址

    2.equals对比的是常量池中值,有个拿到地址去常量池中取值的过程,最后在进行值的对比,所以效率低点

    源码如下:

    String中对equals进行了重写,如果是Object,比较地址。

  • 相关阅读:
    golang-----giao起来
    Django-----你醒了吗?
    linux
    dapper之连接数据库(Oracle,SQL Server,MySql)
    mongodb 物理删除数据
    一生难得的偶遇
    奇怪的电话
    我的魔兽争霸
    第四章 吃饭
    第三章 百花谷
  • 原文地址:https://www.cnblogs.com/wangzhuxing/p/6507488.html
Copyright © 2011-2022 走看看