频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Java String 的 equals() 方法可能的优化

来源: 作者: 出处:巧巧读书 2006-10-08 进入讨论组

JDK1.4, 1.5 的 String Class 代码如下











[code]











public final class String











    implements java.io.Serializable, Comparable<String>, CharSequence











{











    /** The value is used for character storage. */











    private final char value[];












 


 



 



    /** The offset is the first index of the storage that is used. */











    private final int offset;












 


 



 



    /** The count is the number of characters in the String. */











    private final int count;











[/code]












 


 



 



[code]











    /**











     * Initializes a newly created <code>String</code> object so that it











     * represents the same sequence of characters as the argument; in other











     * words, the newly created string is a copy of the argument string. Unless











     * an explicit copy of <code>original</code> is needed, use of this











     * constructor is unnecessary since Strings are immutable.











     *











     * @param   original   a <code>String</code>.











     */











    public String(String original) {











            int size = original.count;











            char[] originalValue = original.value;











            char[] v;











            if (originalValue.length > size) {











                // The array representing the String is bigger than the new











                // String itself.  Perhaps this constructor is being called











                // in order to trim the baggage, so make a copy of the array.











                v = new char[size];











                System.arraycopy(originalValue, original.offset, v, 0, size);











            } else {











                // The array representing the String is the same











                // size as the String, so no point in making a copy.











                v = originalValue;











            }











            this.offset = 0;











            this.count = size;











            this.value = v;











    }











[/code]











从这段构造函数中,我们可以看出,不同Reference的String之间有可能共享相同的 char[]。












 


 



 



[code]











    /**











     * Compares this string to the specified object.











     * The result is <code>true</code> if and only if the argument is not











     * <code>null</code> and is a <code>String</code> object that represents











     * the same sequence of characters as this object.











     *











     * @param   anObject   the object to compare this <code>String</code>











     *                     against.











     * @return  <code>true</code> if the <code>String </code>are equal;











     *          <code>false</code> otherwise.











     * @see     java.lang.String#compareTo(java.lang.String)











     * @see     java.lang.String#equalsIgnoreCase(java.lang.String)











     */











    public boolean equals(Object anObject) {











            if (this == anObject) {











                return true;











            }





http://www.qqread.com/java/2006/10/w225681.html 更多文章 更多内容请看系统优化大全Java环境安装配置Java编程开发手册专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
较早的文章:Java Socket编程(三)-1

较新的文章:java swing的拖放例子
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章