Apache Commons 系列简介 之 Lang

原文链接:http://www.blogways.net/categories/apache/

一、概述

Apache Commons Lang库提供了标准Java库函数里所没有提供的Java核心类的操作方法。Apache Commons Lang为java.lang API提供了大量的辅助工具,尤其是在String操作方法,基础数值方法,对象引用,并发行,创建及序列化,系统属性方面。

Lang3.0及其后续版本使用的包名为org.apache.commons.lang3,而之前的版本为org.apache.commons.lang,允许其在被使用的同时作为一个较早的版本。

Apache Commons Lang 3.3 API包列表:

  • org.apache.commons.lang3
  • org.apache.commons.lang3.builder
  • org.apache.commons.lang3.concurrent
  • org.apache.commons.lang3.event
  • org.apache.commons.lang3.exception
  • org.apache.commons.lang3.math
  • org.apache.commons.lang3.mutable
  • org.apache.commons.lang3.reflect
  • org.apache.commons.lang3.text
  • org.apache.commons.lang3.text.translate
  • org.apache.commons.lang3.time
  • org.apache.commons.lang3.tuple

二、下载

官方下载页:

http://http://commons.apache.org/proper/commons-lang/download_lang.cgi 源码:

svn checkout http://svn.apache.org/repos/asf/commons/proper/pool/trunk commons-pool2

Maven工程依赖:

<dependency>
	<groupId>org.apache.commons</groupId>
  		<artifactId>commons-lang3</artifactId>
  		<version>3.3</version>
</dependency>

三、使用说明

3.1 org.apache.commons.lang3

此包提供了高度可重用静态的工具方法,主要是对java.lang类的一些补充。

由于此包中方法绝大多数都为静态的,因此__不需要创建实例化相应的对象__,而是通过类名__直接调用__需要的方法。

ArrayUtils是一个对数组进行特殊处理的类。当然 jdk中的Arrays是有一些功能的,Array也提供了一些动态访问 java数组的方法,这里的ArrayUtils扩展提供了更多的功能。

下面是indexOf方法的具体实现,用以从指定的startIndex开始,从数组array中返回第一个值为valueToFind的下标。

public static int indexOf(final double[] array, final double valueToFind, int startIndex) {
    if (ArrayUtils.isEmpty(array)) {
        return INDEX_NOT_FOUND;
    }
    if (startIndex < 0) {
        startIndex = 0;
    }
    for (int i = startIndex; i < array.length; i++) {
        if (valueToFind == array[i]) {
            return i;
        }
    }
    return INDEX_NOT_FOUND;
}

在使用此方法的时候__不应该__:

ArrayUtils au = new ArrayUtils();
au.indexOf(array,valueToFind,startIndex);

正确的使用方式

ArrayUtils.indexOf(array,valueToFind,startIndex);

一个比较完整的例子:

package wz.lang3.test;

import org.apache.commons.lang3.ArrayUtils;
public class arrayutilstest 
{
	public static void main(String[] args)
	{
		double[] array = {1.23,2.34,3.45,4.56,5.67,6.78,7.89,8.90};
		
		int result = ArrayUtils.indexOf(array, 5.67, 3);
		
		System.out.println(result);
	}
} 
//输出结果:4

以下是网络实例: [ArrayUtils实例][]! [StringUtils实例][]! [ArrayUtils实例]: http://www.blogjava.net/sean/archive/2005/07/30/8775.html “ArrayUtils实例” [StringUtils实例]: http://www.blogjava.net/sean/archive/2005/07/30/8776.html “StringUtils实例”

其他的一些类的用途:

  • AnnotationUtils用于辅助处理注释实例。
  • CharSetUtils用于操作字符集实例。
  • CharUtils用于操作字符基本类型及字符类对象。
  • StringUtils用于实现对字符串的操作,处理null输入。
  • [其他类][OtherClass]。 [OtherClass]: http://commons.apache.org/proper/commons-lang/javadocs/api-release/index.html “Org.apache.commons.lang3类列表”
3.2 org.apache.commons.lang3.builder

辅助实现equals(Object)toString()hashCode(), 和 compareTo(Object)方法, 在这个包里面一共有7个类:

  • CompareToBuilder : 用于辅助实现Comparable.compareTo(Object)方法;
  • EqualsBuilder : 用于辅助实现Object.equals(Object)方法;
  • HashCodeBuilder : 用于辅助实现Object.hashCode()方法;
  • ToStringBuilder : 用于辅助实现Object.toString()方法;
  • ReflectionToStringBuilder : 使用反射机制辅助实现Object.toString()方法;
  • ToStringStyle : 辅助ToStringBuilder控制输出格式;
  • StandardToStringStyle : 辅助ToStringBuilder控制标准格式。

在我们的日常编码过程当中,经常会使用到比较两个对象是否相等、比较大小、取hash、获取对象信息等。但是在实现这些方法的具体代码当中,稍微有点不注意就会出现一些BUG,而且有些往往还非常难以发现,因此org.apache.commons.lang3.builder中提供的这些用于辅助实现上述功能的方法就比较好了,有了这些类,就可以更好、更快、更方便的实现上述方法。

以下例子来自网络:

//利用反射机制的版本自动化实现需要的功能
//比较两个对象
public int compareTo(Object o) {
    return CompareToBuilder.reflectionCompare(this, o);
}
//判断相等
public boolean equals(Object o) {
    return EqualsBuilder.reflectionEquals(this, o);
}
//取hash
public int hashCode() {
    return HashCodeBuilder.reflectionHashCode(this);
}
//获取基本信息
public String toString() {
    return ReflectionToStringBuilder.toString(this);
}

详细例子__[请参考][]__! [请参考]: http://www.blogjava.net/sean/archive/2005/07/30/8781.html “org.apache.commons.lang.builder”

3.3 org.apache.commons.lang3.time

用于提供操作时间(Date)和日期(Duration)的方法和类,在这个包里面一共有7个类:

  • DateFormatUtils : 提供格式化日期和时间的功能及相关常量,
  • DateUtils : 在Calendar和Date的基础上提供更方便的访问,
  • DurationFormatUtils : 提供格式化时间跨度的功能及相关常量,
  • FastDateFormat : 为java.text.SimpleDateFormat提供一个的线程安全的替代类,
  • FastDateParser : 为java.text.SimpleDateFormat提供一个的线程安全的替代类,
  • FastDatePrinter : 为java.text.SimpleDateFormat提供一个的线程安全的替代类,
  • StopWatch : 提供一套方便的计时器的API。

这些包除了StopWatch,其他的因为都是不可变的,所以是__线程安全__的,此包包含了一些操作时间的基础工具。更Apache Commons Lang中的其他的大部分类一样,此包中的方法基本均为static方法,应该__直接使用类名调用__相应的方法予以实现相应的功能。

以下例子来自网络:

package sean.study.jakarta.commons.lang;
import java.util.Calendar;
import java.util.Date;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.*;
public class DateTimeUsage 
{
    public static void main(String[] args) 
	{
        demoDateUtils();
        demoStopWatch();
    }
    public static void demoDateUtils() 
	{

        System.out.println(StringUtils.center(" demoDateUtils ", 30, "="));
        Date date = new Date();
        String isoDateTime = DateFormatUtils.ISO_DATETIME_FORMAT.format(date);
        String isoTime = DateFormatUtils.ISO_TIME_NO_T_FORMAT.format(date);
        FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM");
        String customDateTime = fdf.format(date);
        System.out.println("ISO_DATETIME_FORMAT: " + isoDateTime);
        System.out.println("ISO_TIME_NO_T_FORMAT: " + isoTime);
        System.out.println("Custom FastDateFormat: " + customDateTime);
        System.out.println("Default format: " + date);
        System.out.println("Round HOUR: " + DateUtils.round(date, Calendar.HOUR));
        System.out.println("Truncate HOUR: " + DateUtils.truncate(date, Calendar.HOUR));
        System.out.println();
    }
    public static void demoStopWatch() 
	{

        System.out.println(StringUtils.center(" demoStopWatch ", 30, "="));
        StopWatch sw = new StopWatch();
        sw.start();
        operationA();
        sw.stop();
        System.out.println("operationA used " + sw.getTime() + " milliseconds.");
        System.out.println();
    }
    public static void operationA() 
	{
        try {
            Thread.sleep(999);
        }
        catch (InterruptedException e) {
            // do nothing
        }
    }
}

输出结果:

======= demoDateUtils ========
ISO_DATETIME_FORMAT: 2005-08-01T12:41:51
ISO_TIME_NO_T_FORMAT: 12:41:51
Custom FastDateFormat: 2005-08
Default format: Mon Aug 01 12:41:51 CST 2005
Round HOUR: Mon Aug 01 13:00:00 CST 2005
Truncate HOUR: Mon Aug 01 12:00:00 CST 2005
======= demoStopWatch ========
operationA used 1000 milliseconds.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: org.apache.commons.lang是一个开源的Java工具库,提供了许多常用的工具类,用于简化Java开发过程中的一些常见任务。 我们可以通过以下步骤下载org.apache.commons.lang: 1. 打开Apache Commons的官方网站,网址为https://commons.apache.org/proper/commons-lang/ 2. 在网站页面的顶部导航栏找到"Download"链接,并点击进入下载页面。 3. 在下载页面中,找到最新版本的org.apache.commons.lang,并点击下载。 4. 下载完成后,将下载的文件解压缩到你希望存放的目录中。 当我们成功下载并解压缩org.apache.commons.lang后,我们就可以开始在我们的Java项目中使用它了。 要在我们的项目中使用org.apache.commons.lang,我们需要在项目的构建路径中添加对应的库文件。具体步骤如下: 1. 打开你的Java集成开发环境(如Eclipse、IntelliJ等)。 2. 找到你的项目,并右键点击项目名称。然后在弹出菜单中选择"Build Path"或"设置构建路径"。 3. 在构建路径设置对话框中,选择"Libraries"或"库"选项卡。 4. 点击"Add JARs"或"添加JAR文件"按钮,并选择你下载并解压缩的org.apache.commons.lang的JAR文件。 5. 点击"OK"或"确定"按钮,保存设置,完成对org.apache.commons.lang的导入。 这样,我们就可以在我们的代码中使用org.apache.commons.lang的各种工具类了,比如StringUtils、NumberUtils等等,来简化我们的开发工作,提高代码的可读性和效率。同时,我们也可以通过查阅官方文档和示例代码来了解更多关于org.apache.commons.lang的使用方法和功能。 ### 回答2: org.apache.commons.langApache Commons项目中的一个模块,提供了一系列常用的工具类和方法,主要目的是为了简化Java开发过程中的一些常见操作。以下是关于如何下载org.apache.commons.lang的步骤: 1. 打开Apache Commons官方网站(https://commons.apache.org/)。 2. 在页面上方的菜单栏中,点击"Projects"(项目)。 3. 在项目列表中,找到并点击"Commons Lang"。 4. 在该项目的页面上,可以找到项目的描述、版本信息、特性列表等相关信息。 5. 在页面上方的菜单栏中,点击"Download"(下载)。 6. 在下载页面中,可以找到各个版本的发布包和文档。 7. 根据需要选择合适的版本(一般推荐选择最新稳定版),点击相应版本的下载链接。 8. 下载完成后,解压文件,即可得到org.apache.commons.lang相关的jar文件。 9. 在开发环境中,将该jar文件引入到项目中。 以上就是关于如何下载org.apache.commons.lang的简要步骤。请注意,在下载和使用任何第三方库之前,务必仔细阅读官方文档,了解其使用方法和要求,以免出现使用异常和安全问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值