广告
返回顶部
首页 > 资讯 > 精选 >如何在java项目中使用字符串与数字的性能
  • 260
分享到

如何在java项目中使用字符串与数字的性能

java字符串ava 2023-05-31 10:05:37 260人浏览 独家记忆
摘要

这期内容当中小编将会给大家带来有关如何在java项目中使用字符串与数字的性能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。对于大数据处理来说,从字符串替换为数字类型,可以极大地节省内存、磁盘存储以及网络带

这期内容当中小编将会给大家带来有关如何在java项目中使用字符串与数字的性能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

对于大数据处理来说,从字符串替换为数字类型,可以极大地节省内存、磁盘存储以及网络带宽,减少io的代价,而且很多数据结构算法使用数字类型比字符串要更快。

我们来看一个例子,假设你有很多的日志需要处理,而每条日志都有一个唯一的标识,标识类似这样的格式:

F50515826117295078443832154813577306424F16242359349767110173810376634214027595F68849238131213173817278044081826528150

看到这些标识,你怎么想?我的第一反应应该是数字,可是怎么有个F呢?我想可以把它当做16进制。后来发现可以把F当做负号,这就是一个64位的长整型。

那么如果你把这些标识当成字符串,会有什么不同呢?

当然有,如果你每秒要处理这样的日志百万或者千万条,每条处理结果可能会包含百万或者千万个这样的标识元素构成的集合,这个不同就会体现的非常明显。

下面,我们来分析一下标识3832154813577306424的存储占用情况:

1、内存占用

当做字符串:我们知道,JAVA中字符串是由字符构成的,一个字符是由2个字节构成的(这是JAVA的悲剧了),上述标识有19个字符,所以,占用的内存大小为:19*2+4=42(字节),+4是因为字符串使用一个整型保存字符串的哈希值。

当做数字:如当做长整型,则占用的内存大小为8字节。

这里有5倍以上的差距了吧。

2、序列化字节大小

当我们需要通过网络传输这些标识或者需要把这些标识存储到磁盘中的时候,我们就需要把这些标识转换为字节数组,如何转换为字节数组呢?我们可以使用多种编码方式。

当做字符串:我们知道,JAVA中字符串转换为字节数组可以使用多种编码方式,我们看看常见的编码方式对如上字符串编码之后的字节数:

String abc = "3832154813577306424";System.out.println("3832154813577306424 length:"+abc.length());System.out.println(Charset.defaultCharset().name()+":"+abc.getBytes().length);System.out.println("unicode:"+abc.getBytes("unicode").length);System.out.println("gbk:"+abc.getBytes("gbk").length);System.out.println("gb2312:"+abc.getBytes("gb2312").length);System.out.println("ISO-8859-1:"+abc.getBytes("ISO-8859-1").length);

输出如下:

3832154813577306424 length:19UTF-8:19unicode:40gbk:19gb2312:19ISO-8859-1:19

当做数字:如当做长整型,则占用的内存大小为8字节。

这里有2倍以上的差距了吧。

那么我们如何在长整型和字节数组之间转换呢?

String abc = "3832154813577306424";System.out.println("3832154813577306424 length:"+abc.length());System.out.println("long:"+ByteUtils.longToBytes(Long.parseLong(abc)).length);byte[] bytes = ByteUtils.longToBytes(Long.parseLong(abc));System.out.println("string:"+ByteUtils.bytesToLong(bytes));

输出如下:

3832154813577306424 length:19long:8string:3832154813577306424
public static byte[] longToBytes(long x) {  ByteBuffer longBuffer = ByteBuffer.allocate(Long.BYTES);  longBuffer.putLong(0, x);  return longBuffer.array();}public static long bytesToLong(byte[] bytes) {  return bytesToLong(bytes, 0, bytes.length);}public static long bytesToLong(byte[] bytes, int offset, int length) {  ByteBuffer longBuffer = ByteBuffer.allocate(Long.BYTES);  longBuffer.put(bytes, offset, length);  longBuffer.flip();//need flip  return longBuffer.getLong();}

上述就是小编为大家分享的如何在java项目中使用字符串与数字的性能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: 如何在java项目中使用字符串与数字的性能

本文链接: https://www.lsjlt.com/news/224891.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在java项目中使用字符串与数字的性能
    这期内容当中小编将会给大家带来有关如何在java项目中使用字符串与数字的性能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。对于大数据处理来说,从字符串替换为数字类型,可以极大地节省内存、磁盘存储以及网络带...
    99+
    2023-05-31
    java 字符串 ava
  • 字符串在Java项目中有哪些使用方法
    这期内容当中小编将会给大家带来有关字符串在Java项目中有哪些使用方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。public class StudyString { public static ...
    99+
    2023-05-31
    java 字符串 中有
  • Java项目中如何将Boolean与字符串进行转换
    Java项目中如何将Boolean与字符串进行转换?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。mysql有个字段是bit,只存储1和0,是二进制存储,那么在java的dao层...
    99+
    2023-05-31
    boolean 字符串 ava
  • 在java项目中如何实现将字符串转换为整数
    这篇文章给大家介绍在java项目中如何实现将字符串转换为整数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。java中字符串转整数       该题虽然和我们正...
    99+
    2023-05-31
    java 字符串 整数
  • 在java项目中如何将 json字符串转换为JSONObject与JSONArray格式
    在java项目中如何将 json字符串转换为JSONObject与JSONArray格式?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。java json字符串转...
    99+
    2023-05-31
    java jsonobject jsonarray
  • 在Java项目中如何将字符串转换成二进制码
    本篇文章给大家分享的是有关在Java项目中如何将字符串转换成二进制码,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java将字符串转成二进制码,具体内容如下public voi...
    99+
    2023-05-31
    java 字符串 二进制码
  • java如何在字符串中获取不同的字符及其数量
    小编给大家分享一下java如何在字符串中获取不同的字符及其数量,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!如何在字符串中获取不同的字符及其数量这道题可以拆解为两个步骤,第一步,找出不同的字符,第二步,统计出它们的数量。好...
    99+
    2023-06-27
  • 如何在Java中使用String保存字符串
    本篇文章给大家分享的是有关如何在Java中使用String保存字符串,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。String 真的是 Immutable 的吗Java 中的 ...
    99+
    2023-06-15
  • 如何在PHP中使用字符串
    引言 字符串是由一个或多个字符组成的序列,可以由字母、数字或符号组成。所有的书面通信都是由字符串组成的。因此,它们是任何编程语言的基础。 在本文中,您将学习如何创建和查看字符串的输出,如何使用转义序列...
    99+
    2023-09-18
    php 开发语言
  • 如何使用JavaScript中的字符串转换数字
    这篇文章给大家介绍如何使用JavaScript中的字符串转换数字,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。js 字符串转换数字方法主要有三种: 转换函数、强制类型转换、利用js变量...
    99+
    2022-10-19
  • 如何使用java实现字符串中的字母排序
    这篇文章主要介绍了如何使用java实现字符串中的字母排序的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用java实现字符串中的字母排序文章都会有所收获,下面我们一起来看看吧。题目要求java实现字符串中的...
    99+
    2023-07-06
  • Java 性能优化中如何进行字符串过滤
    本篇文章给大家分享的是有关Java 性能优化中如何进行字符串过滤,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。★一个简单的需求  首先描述一下需求:给定一个 String 对象...
    99+
    2023-06-02
  • 如何在Java中使用substring()函数截取子字符串
    这篇文章给大家介绍如何在Java中使用substring()函数截取子字符串,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 substring(int beginIndex) 形式此方式用于提取从索...
    99+
    2023-06-08
  • 如何使用Python从字符串中提取数字?
    在Python中,有时候需要从字符串中提取特定的数字信息,这种操作很常见。例如,从一篇新闻报道中提取新闻发布日期、从一篇小说中提取章节编号等。那么,如何使用Python从字符串中提取数字呢?本文将介绍几种方式。 阅读更多:Python...
    99+
    2023-08-31
    mysql 数据库 python
  • 使用Java怎么实现统计字符串中汉字与英文的数量
    这期内容当中小编将会给大家带来有关使用Java怎么实现统计字符串中汉字与英文的数量,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体如下:package org.zhy.demo.algorithm;pu...
    99+
    2023-05-31
    java ava 字符串
  • 利用Java如何实现去掉字符串中的数字0
    利用Java如何实现去掉字符串中的数字0?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。方式一:例如:”0000123” (字符串必须全为数字)处理过程:String tempS...
    99+
    2023-05-31
    java ava 字符串
  • 如何在PHP项目中实现一个反序列化字符串逃逸功能
    这篇文章给大家介绍如何在PHP项目中实现一个反序列化字符串逃逸功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。任何具有一定结构的数据,如果经过了某些处理而把结构体本身的结构给打乱了,则有可能会产生漏洞。0CTF 20...
    99+
    2023-06-06
  • java中如何使用substring截取字符串
    在Java中,可以使用substring方法来截取字符串。substring方法有两种重载形式:1. substring(...
    99+
    2023-08-24
    java substring
  • 如何在Python中使用字符串方法
    本篇文章给大家分享的是有关如何在Python中使用字符串方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、find方法可以在一个较长的字符串中查找子串,他返回子串所在位置的...
    99+
    2023-06-15
  • 如何在python中使用字符串索引
    这篇文章给大家介绍如何在python中使用字符串索引,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillow;4.twist...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作