博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
String操作性能提升一
阅读量:7187 次
发布时间:2019-06-29

本文共 1353 字,大约阅读时间需要 4 分钟。

hot3.png

public static void main(String[] args) {        String s1 = new String("nimei");        String s11 = new String("nimei");        String s2 = "nimei";        String s22 = "nimei";                System.out.println(s1 == s11);//false        System.out.println(s2 == s22);//true        System.out.println(s1 == s2);//false        System.out.println(s1.intern() == s2);//true                    }

Java中String == 比较的是两个引用指向的地址(对象地址)是否相等

equals(方法) 比较的是两个对象存储的值是否相等

下面直接看Stirng类中对Object equals方法的重写

public boolean equals(Object anObject) {    if (this == anObject) {         return true;    }    if (anObject instanceof String) {        String anotherString = (String)anObject;        int n = count;        if (n == anotherString.count) {        char v1[] = value;        char v2[] = anotherString.value;        int i = offset;        int j = anotherString.offset;        while (n-- != 0) {            if (v1[i++] != v2[j++])            return false;        }        return true;        }    }    return false;    }

由以上源码可分析出,

String s = "xx";虚拟机执行步骤包含:从String缓冲池查询是否存在值为"xx"的对象,存在则返回一个引用并赋给s,不存在则在缓冲池创建创建一个新对象。

Stirng s1 = new Stirng("xx");会在heap中新建一个对象,s1指向该对象

s == s1 直接返回true,s.equals(s1)会将s、s1指向的值进行拆分比较值是否不相等,所以若字符串值比较长的话也是相对耗资源的事,可以使用s1.intern() == s进行优化(s1.intern()将s1对象放入缓冲池)则效率会相对提高,程序的效率是对每条语句省出来的。

转载于:https://my.oschina.net/foreverhui/blog/222039

你可能感兴趣的文章
文档元素的悬浮效果--新手向
查看>>
我的友情链接
查看>>
拖放实现--兼容手机与pc端
查看>>
搭建Git服务器
查看>>
exit命令--Linux命令应用大词典729个命令解读
查看>>
OpenCV 不同的数据类型调用不同的函数
查看>>
网络服务错误码解析
查看>>
Redis内存使用优化与存储
查看>>
LAMP环境的×××
查看>>
Linux学习日志1-基本知识
查看>>
system调用命令行命令而不显示命令行窗口
查看>>
我的友情链接
查看>>
微软云计算介绍与实践(实践之二十六)
查看>>
LAMP 系统性能调优,第 1 部分: 理解 LAMP 架构
查看>>
序列化一个double时在其后面限制两位小数点
查看>>
我的友情链接
查看>>
09Exchange Server 2010跨站点部署-配置NLB
查看>>
tomcat-apr
查看>>
数字证书原理
查看>>
Java基础学习20 (static)
查看>>