package com.mypgl.util;
import java.math.BigDecimal;
import java.util.Random;
import java.util.Calendar;
import java.util.ArrayList;
/**
* 此类中封装一些常用的数值类型方法。 所有方法都是静态方法,不需要生成此类的实例, 为避免生成此类的实例,构造方法被申明为private类型的。
*
*
* @author LeeHomshuai
* @serialData 2005/11/19
*/
public class NumberUtil {
/**
* 私有构造方法,防止类的实例化,因为工具类不需要实例化。
*/
private NumberUtil() {
}
private static Random random = new Random();
/**
* 生成随机数,种子为Calendar.DATE时间 (基数+占位符+9位时间)的一个字符串,根据占位符得到不同长度的随机数,最小10位
*
* @author lx_mxin
* @param base基数
* @param placeholder占位符
* @return 基数+占位符+9位时间的长度
*/
public static long toRandomId(int base, int placeholder) {
int nextInt = random.nextInt(1000);
Calendar cal = Calendar.getInstance();
int date = cal.get(Calendar.DATE);
base += placeholder;
long second = date / 1000;
String seed = second + nextInt + "";
seed = seed.substring(1, seed.length());
seed = placeholder + base + seed;
return Long.parseLong(seed);
}
/**
* 精确的除法运算,返回一个商.
*
* @author lx_mxin
* @param dividend除数
* @param divisor被除数
* @param scale保留小数点后几位
* @return 商
*/
public static double div(double dividend, double divisor, int scale) {
if (scale < 0 || divisor == 0)
return 0.00;
BigDecimal b1 = new BigDecimal(dividend);
BigDecimal b2 = new BigDecimal(divisor);
return (b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP)).doubleValue();
}
<!--more-->
/**
* 精确的除法运算,返回一个商的百分比. 有除不尽可能,可选择保留小数点位数
*
* @author lx_mxin and cpxy
* @param dividend除数
* @param divisor被除数
* @param scale保留小数点后几位
* @return 百分比
*/
public static String percent(double dividend, double divisor, int scale) {
String number = null;
if (divisor == 0)
return "0%";
String testStr = String.valueOf(div(dividend, divisor, 2) * 100);
String minDotNumber = testStr.substring(parseDot(testStr), testStr
.length());// 获得小数点后数值
testStr = testStr.substring(0, parseDot(testStr)); // 获得整数数值
if (scale == 0)
return testStr + "%";
minDotNumber = minDotNumber.substring(0, scale + 1);
number = testStr + minDotNumber + "%";
return number;
}
/**
* 生成指定位数随机数字,并返回字符形式,过大会导致机器停止响应
*
* @author cpxy
* @param values指定位数
* @return String 随机的一组字符型数值
*/
public static String toNumberValue(int values) {
String tempValues = "1";
if (values < 0 || values > 10)
values = 0;
for (int i = 1; i < values; i++) {
tempValues = tempValues + "0";
}
int tempInt = Integer.parseInt(tempValues);
tempValues = null;
ArrayList list = new ArrayList();
for (int j = 0; j < tempInt; j++) {
list.add(String.valueOf(j)); // 加载指定位数数值
}
String rs = "";
int tmp = -1;
if (list.size() > 1) {
while (list.size() > 0) {
tmp = random.nextInt(list.size());
rs += list.get(tmp) + ",";
list.remove(tmp);
}
} else {
rs = String.valueOf(random.nextInt(9));
}
return rs;
}
/**
* 根据当前豪秒生成一组随机数,扰乱数越大生成随机数越大
*
* @author cpxy
* @param idByte扰乱数
* @return String 返回随机数数值
*/
public synchronized static String toMillisId(int idByte) {
StringBuffer result = new StringBuffer();
result = result.append(System.currentTimeMillis());
for (int i = 1; i < idByte; i++) {
result = result.append(random.nextInt(9));
}
return result.toString();
}
/**
* 根据数值产生一个指定数值到其倍数之间的随机数
*
* @author cpxy
* @param vals指定启始数值
* @return double 返回随机数数值
*/
public static double toRanValueToDouble(int vals) {
double val = (vals + 1) * Math.random();
val = Math.floor(val) + vals;
return val;
}
/**
* 返回指定数值的阶乘
*
* @author cpxy and lx_mxin
* @param numerical指定启始数值
* @param square指定数值的倍数
* @return int 返回阶乘
*/
public static int doFactorial(int numerical, int multiple) {
if (numerical == 1)
return 1;
if (multiple == 1)
return numerical;
int original = numerical;
for (int i = 1; i < multiple; i++) {
numerical = numerical * original;
}
return numerical;
}
/**
* 返回两个字符串数字的和
*
* @author cpxy and lx_mxin
* @param val1第一个数
* @param val2第二个数
* @return int 和
*/
public static int addStr(String val1, String val2) {
if (checkNumber(val1) == false || checkNumber(val2) == false)
return -1;
BigDecimal b1 = new BigDecimal(val1);
BigDecimal b2 = new BigDecimal(val2);
return b1.add(b2).intValue();
}
/**
* 将给定数值反转输出
*
* @author cpxy
* @param values指定启始数值
* @return 返回反转后数值
*/
public static int doNumberRev(String values) {
if (values.length() == 1)
return Integer.parseInt(values);
String result = values.substring(values.length() - 1, values.length());
result += doNumberRev(values.substring(0, values.length() - 1));
return Integer.parseInt(result);
}
/**
* 将给定字符转化为整型
*
* @author cpxy
* @param values指定启始数值
* @return 返回字符类型
*/
public static int toNumber(String values) {
if (checkNumber(values) == false)
return -1;
return Integer.parseInt(values);
}
/**
* 获得字符串中第一个小数点所在位置(由0开始,想看往后的自己递归)
*
* @author cpxy
* @param values指定数字
* @return 返回小数点位置
*/
public static int parseDot(String values) {
int dot = 0;
for (int i = 0; i < values.length(); i++) {
char ctemp = values.charAt(i);
if (ctemp == ".".charAt(0)) {
dot = i;
break;
}
}
return dot;
}
/**
* 返回数组中数值的平均值
*
* @author cpxy
* @param values指定数组
* @return 返回平均值
*/
public static int toTotal(ArrayList values) {
int total = 0;
if (values.size() > 0) {
for (int i = 0; i < values.size(); i++) {
total += Integer.parseInt(values.get(i).toString());
}
} else
return 0;
return total / values.size();
}
/**
* 检查指定数值是否为数字形式
*
* @author cpxy
* @param str指定数字
* @return boolean 返回布尔类型
*/
public static boolean checkNumber(String str) {
char[] cnum = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' };
int plength = str.length();
for (int i = 0; i < plength; i++) {
char ctemp = str.charAt(i);
boolean btemp = false;
for (int j = 0; j < cnum.length; j++) {
if (ctemp == cnum[j]) {
btemp = true;
break;
}
}
if (!btemp)
return false;
}
return true;
}
/**
* 计算传入数值的大小(B,KB,MB)
*
* @author cpxy
* @param size整型数值大小
* @return 值+(B,KB,MB)
*/
public static String toMKByte(int size) {
if (size > (1024 * 1024)) {
return ((float) size / (1024 * 1024) + "").substring(0, 4) + "MB";
} else if (size > 1024) {
return ((float) size / 1024 + "").substring(0, 4) + "KB";
} else
return size + "B";
}
}
分享到:
相关推荐
提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档操作等。 主要分为以下几种: - 1.通用操作类,例如String、数字、日期、各种校验等 - 2.文档操作,excel、pdf等 - 3.加密...
在Java中,工具类通常是一些静态方法的集合,用于执行特定的任务,而不涉及对象的实例化。以下是对标题和描述中提到的一些Java常用工具类的详细讲解: 1. **UUID类**: `java.util.UUID` 是用来生成全局唯一标识符...
提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档操作等。 主要分为以下几种: - 1.通用操作类,例如String、数字、日期、各种校验等 - 2.文档操作,excel、pdf等 - 3.加密...
收集了java项目开中常用的工具操作类,方法非常全,可应用在大部份java 项目中。 提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档操作等。 主要分为以下几种: - 1.通用...
本篇文章将深入探讨Java中的对象、基础类型以及数据处理相关的工具类。 首先,让我们关注Java中的基础类型。Java有八种原始数据类型:byte、short、int、long、float、double、char和boolean。为了方便处理这些类型...
提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档操作等。 主要分为以下几种: - 1.通用操作类,例如String、数字、日期、各种校验等 - 2.文档操作,excel、pdf等 - 3.加密...
以下是一些Java中常用工具类的详细介绍: 1. **String**: `java.lang.String` 类是最基础的字符串处理工具类,提供了大量的静态方法,如 `concat()`、`substring()`、`indexOf()`、`replace()` 等,用于字符串的...
本资料包含28个Java常用的工具类源码,对理解Java编程和提升开发技能非常有帮助。 1. **字符串工具类**:如StringUtils,提供了诸如格式化、拼接、检查空值等实用方法,避免了手动处理字符串时的常见错误。 2. **...
在Java开发过程中,工具类是必不可少的组成部分,它们通常包含了各种通用功能的静态方法,能够极大地提高开发效率和代码质量。这位拥有五年经验的开发者分享的工具类集合,覆盖了数据库连接、格式转换、文件操作和...
提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档操作等。 主要分为以下几种: - 1.通用操作类,例如String、数字、日期、各种校验等 - 2.文档操作,excel、pdf等 - 3.加密...
以下是一些Java中常用的工具类及其包含的重要知识点: 1. **Arrays**: 这个类提供了对数组进行操作的各种方法,如排序、复制、查找和填充。例如,`Arrays.sort()`可以对数组进行升序或降序排序,`Arrays.equals()`...
1. **数据库操作**:在Java中,JDBC(Java Database Connectivity)是连接数据库的标准API,而工具类可能会提供便捷的数据库连接、查询、插入、更新和删除的方法。例如,封装了SQL语句执行、结果集处理,甚至事务...
总的来说,`MyOwnToolClass`是作者对Java开发中常用功能的总结和封装,它集成了许多日常开发中会遇到的问题的解决方案,大大提升了开发效率。通过使用这样的工具类,开发者可以更加专注于业务逻辑,而不是基础操作的...
这篇博文链接(已提供但无法直接访问)可能详细探讨了JavaUtils工具类的设计原则、常用方法以及如何在实际项目中应用。尽管无法直接查看该博文,我们可以从一般的角度来探讨JavaUtils工具类的知识点。 1. **工具类...
在Java中,我们可以使用`Properties`类来加载和保存配置信息,`OrderProperties` 可能扩展了这个功能,提供更方便的接口来获取和设置订单系统相关的配置。 5. **Reflections.java** `Reflections` 是一个强大的...
在IT行业中,SSH(Secure Shell)通常指的是用于安全远程登录和数据传输的网络协议,而这里提到的"ssh常用工具类"可能是指一系列Java编程语言编写的类库,用于简化SSH相关的操作。以下是对这些文件名所暗示的类及其...
1. **字符串处理**:在Java中,String类虽然强大,但有时仍需自定义工具类来增强功能,如字符串格式化、去除空白、替换、分割等。 2. **集合操作**:可能包括对ArrayList、LinkedList、HashMap等集合的便捷操作,如...
避免重复造轮子,开发中常用封装的工具类,包括:类型转换器,时间格式转换器,文件传输,非Controller中获取当前session的工具类,唯一id生成器,MD5加密类(封装jdk自带的md5加密方法),数字格式化的类,得到中文...
JavaUtils是一系列在Java开发中常用的工具类集合,它们提供了许多便利的功能,简化了常见的编程任务。这些工具类通常被封装在某个库或框架中,比如Apache Commons Lang、Google Guava或者是Spring Framework中的org....