`
hpgary
  • 浏览: 81729 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java 大小写最快转换方式

    博客分类:
  • Java
 
阅读更多
package io.mycat;

import java.util.stream.IntStream;
/**
 * 小写字母的 'a'=97 大写字母 A=65 更好相差32利用这个差进行大小写转换
 * @author : Hpgary
 * @date : 2017年5月3日 10:26:26
 * @mail: hpgary@qq.com
 * */
public class StringUtils {

	protected final static byte[] CHAR_TYPE = new byte[512];

	protected final static byte CHARACTER_DIFFER = 32;

	static {
		/**
		 * 先将大写字母放入 CHAR_TYPE 中,将大写转换成为小写字母
		 * */
		IntStream.rangeClosed('A', 'Z').forEach(c -> CHAR_TYPE[c] = (byte) (c + CHARACTER_DIFFER));
		/**
		 * 将小写字母放入 CHAR_TYPE,存值为小写字母
		 * */
		IntStream.rangeClosed('a', 'z').forEach(c -> CHAR_TYPE[c] = (byte) (c));
	}
	
	public static byte[] toUpperCase(String src) {
		byte[] bytes = src.getBytes();
		for (int x = 0; x < bytes.length; x++) {
			int tmpLen = bytes[x] << 1;
			if (tmpLen < CHAR_TYPE.length && tmpLen >= 0) {
				byte b = CHAR_TYPE[bytes[x]];
				if (b != 0) {
					bytes[x] = (byte) (b - CHARACTER_DIFFER);
				}
			}
		}
		return bytes;
	}

	public static byte[] toLowerCase(String src) {
		byte[] bytes = src.getBytes();
		for (int x = 0; x < bytes.length; x++) {
			int tmpLen = bytes[x] << 1;
			if (tmpLen < CHAR_TYPE.length && tmpLen >= 0) {
				byte b = CHAR_TYPE[bytes[x]];
				if (b != 0) {
					bytes[x] = b;
				}
			}
		}
		return bytes;
	}

	public static void main(String[] args) {
		int count = 100000 ; 
		String str = "fdajfadSKfj1221SDKfdasfdsafjdsafjlsadjfkl;sdajflksadjlfkjasdlk;fjasdklfasdA" ;
		
		long time2 = System.currentTimeMillis();
		for (int x = 0; x < count; x++) {
			str.toUpperCase();
		}
		System.out.println(System.currentTimeMillis() - time2);  //51 - 53
		
		long time1 = System.currentTimeMillis();
		for (int x = 0; x < count; x++) {
			toUpperCase(str) ; 
		}
		System.out.println(System.currentTimeMillis() - time1); // 35-37
	}
}

 

分享到:
评论

相关推荐

    Java 大小写最快转换方式实例代码

    标题提到的“Java大小写最快转换方式实例代码”提供了一种优化的方法,通过预处理字符数组`CHAR_TYPE`来提高转换效率。下面我们将深入探讨这种转换方式及其原理。 首先,我们知道ASCII码中,小写字母的ASCII值比...

    java实现人民币大小写转换方法分享

    在Java编程中,人民币大小写的转换是一个常见的需求,特别是在财务系统或与货币相关的应用中。本文介绍了一种方法,通过Java代码将数字形式的人民币转换为汉字大写,以满足财务报告和审计的要求。以下是实现这一功能...

    实现人民币大小写转换功能

    在IT行业中,人民币大小写转换是一项常见的需求,特别是在财务软件或者银行系统中。这个功能的主要目的是将用户输入的数字人民币金额转换成规范的汉字大写形式,以满足财务报告和审计的要求。以下是对这一功能的详细...

    JAVA快速图片剪切

    在Java编程语言中,图片剪切是一项常见的任务,特别是在图像处理和图形用户界面的应用中。本文将深入探讨如何使用Java实现快速的图片剪切功能,以及相关的核心知识点。 首先,我们要明白图片剪切的基本概念。图片...

    基于java开发的二维码生成小程序

    【基于Java开发的二维码生成小程序】是一个利用Java编程语言实现的实用工具,它能够帮助用户快速生成可扫描的二维码,这些二维码在扫描后能够跳转到预设的网站。这个小程序集成了二维码编码技术,使得非技术人员也能...

    java对dom的三种操作方式

    ### Java对DOM的三种操作方式 在Java编程领域中,处理XML文档是一项常见的任务。XML(可扩展标记语言)作为一种标准的数据交换格式,在多种应用场景中扮演着重要角色。为了简化XML文档的操作,Java提供了多种库和...

    java开源包8

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java语言教程JAVA教程.pdf

    例如,“java:JAVAJava”重复出现,可能是在说明Java语言的命名和大小写敏感性。此外,“1995 Sun Microsystems”、“IBM”和“Oracle”等关键词揭示了Java的起源,即它由Sun Microsystems公司于1995年发布,并在...

    java开源包6

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包9

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包101

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包5

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包4

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    JAVA开源关键词提取框架

    1. **预处理**:首先,文本需要经过一系列预处理操作,如去除标点符号、停用词过滤(移除“的”、“是”等常见但无实际意义的词汇)、词干提取(将单词还原为其基本形式,如“running”-&gt;“run”)以及大小写转换等...

    大整数任意进制转换(2-62进制)

    在这样的系统中,除了0和1,还可以使用26个字母(A-Z,区分大小写)来表示数字,这样就能表达从0到61的所有数字。这种表示方法在某些特定应用中很有用,比如在URL短链接服务中,用较少的字符表示更大的数值。 实现...

    java开源包10

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    fconv-java:用Java编写的小型快速gzip转换器

    `fconv-java` 是一个基于Java开发的小型且高效的gzip文件转换工具,它的设计目标是提供一种简单快捷的方式来处理gzip格式的压缩数据。在本文中,我们将深入探讨gzip压缩格式,Java编程语言如何用于文件处理,以及`...

    java开源包3

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java开源包1

    它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步...

    java实现的感知机手写数字识别

    它是最早形式的神经网络,具有简单、直观的特点。本项目是使用Java实现的感知机,用于手写数字识别,这在图像处理和模式识别领域有着广泛应用,如OCR(光学字符识别)系统。 首先,我们要理解感知机的工作原理。...

Global site tag (gtag.js) - Google Analytics