Java字符串format-用户号补齐格式化应用

简介: Java字符串format-用户号补齐格式化应用

应用场景

在实际生产中,我们经常遇到这样的情况,就是类似生成用户号的标准化字符串。比如,生成一个以1开头,中间为0,后面递增的11位数字:10000000001、10000000002、10000000003……


生成这样的用户号的好处是格式统一,而且能够很清楚的看出此用户号的含义。比如以1开头的为用户号、以2开头的为企业号、以3开头的为商户号等等。


生成用户号后面的顺序数字有很多办法,比如采用数据库的自增属性,采用zookeeper的锁机制等等。但通过他们拿到的往往只是个顺序的数字,位数和前缀并不是逾期的格式。下面就简单介绍一下如何方面的将顺序数字生成标准格式的用户号。


实例

下面以生成用户号和商户号的实例具体说明:


package com;
/**
 * @author 二师兄
 * @date 2017/3/3
 */
public class Test {
    public static void main(String[] args) {
        Long num1 = 1024L;
        Long num2 = 2048L;
        System.out.println("用户号为:" + getUserNo(1,num1));
        System.out.println("企业号为:" + getUserNo(2,num2));
    }
    /**
     * 根据前缀和序列号生成用户号
     * @param preNumber 前缀
     * @param index 序列
     * @return
     */
    public static String getUserNo(int preNumber,Long index){
        return String.format("%d%010d",preNumber,index);
    }
}

打印结果为:


用户号为:10000001024

企业号为:20000002048

1

2

方法说明

很明显,上面的例子使用了String.format方法来格式化字符串,省去了各种判断比较拼接字符串的步骤,精简了代码。


String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。


String.format("%d%010d",preNumber,index)

1

(1)第一个%d代表整数类型(十进制),是preNumber的占位符,拼接字符串的时候会用preNumber的值进行替换。

(2)第二个%010d,前面第一个0代表:数字前面补0;后面的10代表字符总长度为10,d代表整数类型。这个表达式的整体含义就是,用index的值来替换此处表达式,如果index的长度不足10位,则在index的前面用0补齐。


通过以上方法,可以轻易的生成一个其他类似的指定格式的字符串。发挥你的想象力吧。



目录
相关文章
|
2月前
|
人工智能 安全 Java
Java和Python在企业中的应用情况
Java和Python在企业中的应用情况
62 7
|
2月前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
146 83
|
13天前
|
安全 算法 Java
Java CAS原理和应用场景大揭秘:你掌握了吗?
CAS(Compare and Swap)是一种乐观锁机制,通过硬件指令实现原子操作,确保多线程环境下对共享变量的安全访问。它避免了传统互斥锁的性能开销和线程阻塞问题。CAS操作包含三个步骤:获取期望值、比较当前值与期望值是否相等、若相等则更新为新值。CAS广泛应用于高并发场景,如数据库事务、分布式锁、无锁数据结构等,但需注意ABA问题。Java中常用`java.util.concurrent.atomic`包下的类支持CAS操作。
44 2
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
60 26
|
2月前
|
缓存 Java 开发者
Java多线程并发编程:同步机制与实践应用
本文深入探讨Java多线程中的同步机制,分析了多线程并发带来的数据不一致等问题,详细介绍了`synchronized`关键字、`ReentrantLock`显式锁及`ReentrantReadWriteLock`读写锁的应用,结合代码示例展示了如何有效解决竞态条件,提升程序性能与稳定性。
163 6
|
1月前
|
监控 Java 数据库连接
Java线程管理:守护线程与用户线程的区分与应用
在Java多线程编程中,线程可以分为守护线程(Daemon Thread)和用户线程(User Thread)。这两种线程在行为和用途上有着明显的区别,了解它们的差异对于编写高效、稳定的并发程序至关重要。
37 2
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
65 8
|
2月前
|
安全 Java 开发者
Java 多线程并发控制:深入理解与实战应用
《Java多线程并发控制:深入理解与实战应用》一书详细解析了Java多线程编程的核心概念、并发控制技术及其实战技巧,适合Java开发者深入学习和实践参考。
69 6
|
2月前
|
关系型数据库 MySQL Java
MySQL索引优化与Java应用实践
【11月更文挑战第25天】在大数据量和高并发的业务场景下,MySQL数据库的索引优化是提升查询性能的关键。本文将深入探讨MySQL索引的多种类型、优化策略及其在Java应用中的实践,通过历史背景、业务场景、底层原理的介绍,并结合Java示例代码,帮助Java架构师更好地理解并应用这些技术。
57 2
|
2月前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####