`
陈谏辉
  • 浏览: 48299 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Java String提高比较效率

阅读更多

java对两个String进行比较,提高代码运行效率方法如下:

在编程过程中,有时候我们需要循环比较字符串,通常使用的方法是equals如下:

public class TestEquals extends Thread {
public static void main(String args[]) {
String[] checkStr = {"","aaaa","bbbb","sdf","dsdf"};
String str="DingDong";
for(int i=0;i<checkStr.length;i++){
if(str.equals(checkStr[i])){//比较字符串
System.out.println("DingDong has in the checkStr list!");

break;
}
}
}
}

而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;
}

我们可以看到,要得到字符串完全相同,必须进行如下操作:1)比较是否是同一个个对象:" if (this == anObject) {"; 2)是否是同类型对象:“if (anObject instanceof String) {”; 3)转换字符串,判断字符串长度是否相同:“if (n == anotherString.count) {”; 4)分解字符串一一比较。 最终返回boolean值。

通过以上分析,字符串比较经过了4补的操作最终获得结果值。

而当我们知道两个需要比较的对象都是字符串String 时,可以对其代码进行优化!优化后结果如下:

public static void main(String args[]) {
String[] checkStr = { "", "aaaa", "bbbb", "sdf", "dsdf" };
String str = "DingDong";
int strL = str.length();
for (int i = 0; i < checkStr.length; i++) {
if(checkStr[i]!=null&&strL==checkStr[i].length()){//先判断长度,减少直接调用equals方法
if (str.equals(checkStr[i])) {// 比较字符串
System.out.println("DingDong has in the checkStr list!");
break;
}
}
}
}

当我们需要比较的字符串数组非常大时,比如有上千个String[1000]对象,而且每个字符串对象都比较长时,其性能效果就会比较明显了。

方法避免了过多的重复使用equals方法。

分享到:
评论

相关推荐

    史上最全Java面试题目大集合

    为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为...

    Java实体类字段生成工具类-将数据库表列字段转为Java实体类驼峰字段

    但是手动实现这个转换过程比较慢,且容易出错,影响开发效率。为了解决这个问题,开发了这个Java实体类字段生成工具类。 2、该工具类可以将数据库表列字段转化为对应的Java实体类字段。生成的实体类字段格式清晰易...

    java代码优化简介

    可供程序利用的资源(内存、CPU时间...养成好的代码编写习惯非常重要,比如正确地、巧妙地运用java.lang.String类和java.util.Vector类,它能够显著地提高程序的性能。下面我们就来具体地分析一下这方面的问题。 .....

    java代码优化编程

    可供程序利用的资源(内存、CPU时间...养成好的代码编写习惯非常重要,比如正确地、巧妙地运用 java.lang.String类和java.util.Vector类,它能够 显着地提高程序的性能。下面我们就来具体地分析一下这方面的问题。 ……

    【强2】30个java工具类

    使用java工具类可有效的提高开发效率! 没有CSDN积分的朋友到这里源头下载:http://www.javacs.cn/bbs/thread-382-1-1.html 感谢支持 [工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中...

    29个要点帮你完成java代码优化

    通过java代码规范来优化程序,优化内存使用...养成好的代码编写习惯非常重要,比如正确地、巧妙地运用java.lang.String类和java.util.Vector类,它能够显著地提高程序的性能。下面我们就来具体地分析一下这方面的问题。

    深入解析String类:掌握Java中字符串处理的关键方法.zip

    string类的常用方法在Java编程中,String类无疑是我们最常用到的一个类。...掌握String类的常用方法,对于提高编程效率和代码质量至关重要。本篇博文将带你深入了解String类的核心方法,并通过实例演示它们的用法。

    java编程中影响性能的一些点

    在JAVA核心API中,有许多应用final的例子,例如java.lang.String。为String类指定final防止了使用者覆盖length()方法。另外,如果一个类是final的,则该类所有方法都是final的。java编译器会寻找机会内联(inline)...

    java笔试题大汇总

    为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每...

    JAVA程序员面试宝典

    为了提高效率节省空间,我们应该用StringBuffer类 2、应用服务器与WEB SERVER的区别?应用服务器:Weblogic、Tomcat、Jboss; WEB SERVER:IIS、 Apache 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:...

    java面试笔试题集合

    java面试笔试题集合4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。...为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别

    java万年历源代码

    private JLabel l = new JLabel("小提示:可直接输入年份,提高查询效率!"); private JLabel lt = new JLabel();//系统时间 private JLabel ld = new JLabel();//日期是否被选择 private int lastTime; ...

    保存java api、常用工具、一般的api试用代码.rar

    Java API的帮助文档可到 http://docs.oracle.com/javase/8/docs/api/ 下载,灵活使用Java API能够提高使用Java语言编写程序的效率,下面对Java中提供的最常用的包进行介绍。 java.lang:Java语言包, 该包中提供...

    Java程序员面试宝典

    为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每...

    java面试笔试题大汇总

    java面试笔试题大汇总: JAVA相关基础知识(100多到)、代码差错等 1、面向对象的特征有哪些方面 1.抽象:2.继承:3.封装:4....2、String是最基本的数据类型吗...为了提高效率节省空间,我们应该用StringBuffer类 。。。

    Java优化编程(第2版)

    4.3.3 通过自定制缓冲区提高i/o操作效率 4.3.4 通过压缩流提高i/o操作效率 4.3.5 通过非阻塞i/o优化应用性能 4.4 其他 104 4.4.1 数据格式化与性能优化 4.4.2 获取文件信息与性能优化 小结 第5章 jni程序设计与性能...

    java万年历课程设计

    private JLabel l = new JLabel("小提示:可直接输入年份,提高查询效率!"); private JLabel lt = new JLabel();//系统时间 private JLabel ld = new JLabel();//日期是否被选择 private int lastTime; ...

    Java 面试题 word文档

    - 连接池可以提高数据库访问的效率,减少连接建立的时间。 四、其他 1. Web 安全性的考虑(表单验证、浏览器 Basic 方式的验证,应用程序的安全性,SSL,代码考虑) - 需要考虑多种安全性问题,包括数据验证、...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    Java编程老鸟潜心写作,奉献高效率的Java学习心得 完全站在没有编程经验读者的角度,手把手教会读者学习Java 配16小时多媒体教学视频,高效、直观 一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让...

    JAVA面试题最全集

    5.Java中的分页、效率考虑。 6.简单介绍您所了解的structs。 1.xml在项目中的作用 2.s-EJB 与 e-EJB的区别 3.会话面的作用 4.cmp与bmp的优缺点 5.j2me程序的必需的几个部分 6.c/s与b/s的区别 7.构建一...

Global site tag (gtag.js) - Google Analytics