java工具类UUID、Math、Random、StringJoiner

一、UUID

UID全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。

UUID的应用?

使用UUID的好处在分布式的软件系统中(比如:DCE/RPC, COM+,CORBA)就能体现出来,
它能保证每个节点所生成的标识都不会重复,并且随着WEB服务等整合技术的发展,UUID的优势将更加明显。根据使用的特定机制,UUID不仅需要保证是彼此不相同的,或者最少也是与公元3400年之前其他任何生成的通用唯一标识符有非常大的区别。UUID最少在3000+年内不会重复。
这也是通用唯一标识符的一种类型,可用来指向组建对象模块对象和其他的软件组件。第一个通用唯一标
识符是在网络计算机系统(NCS)中创建,并且随后成为开放软件基金会(OSF)的分布式计算环境(DCE)的组件

我们可以使用java中UUID产生UID,其主要方法如下

static UUID	randomUUID()//静态工厂检索一个类型4(伪随机生成)的UUID。

案例

public static String getUUID32(){
     
   //注:因为一般数据库主键为String类型,所以接收类型为String,生成的uuid数据包含-,所以要去掉-
    String uuid = UUID.randomUUID().toString().replace("-", "").toLowerCase();
    return uuid;
}

二、Random

此类的实例用于生成伪随机数流。此类使用 48 位的种子,使用线性同余公式 (linear congruential form) 对其进行了修改

如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。为了保证此属性的实现,为类 Random 指定了特定的算法。为了 Java 代码的完全可移植性,Java 实现必须让类 Random 使用此处所示的所有算法。但是允许 Random 类的子类使用其他算法,只要其符合所有方法的常规协定即可。

1、构造方法

Random()//创建一个新的随机数生成器。

Random(long seed)//使用单个 long 种子创建一个新的随机数生成器。

2、常用方法

//生成boolean值
boolean nextBoolean()//返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 boolean 值。

//生成double值
double nextDouble() //返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。

//生成float值
float nextFloat()//返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值。

//生成int值
int nextInt(int n) //返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。
int nextInt()//返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。

//生成int值
long nextLong()// 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。

3、案例

Random random = new Random();
System.out.println(random.nextInt(10));//3

三、Math

类包含用于执行基本数学运算的方法,Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
Math所有类都是静态的。可以直接类名。调用。

30度在java中的表示 Math.PI /6

1、类常量

static double E    比任何其他值都更接近 e(即自然对数的底数)的 doublestatic double PI   比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值。

2、随机值

static double random() //返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。

3、绝对值

static double abs(double a)
static float abs(float a)
static int abs(int a)  
static long abs(long a)

4、三角函数

static double acos(double a) //反余弦函数  
static double asin(double a) //反正弦函数  
static double atan(double a) //反正切函数


static double sin(double a)  //sin c。正弦函数
static double tan(double a) //tan α 正切函数
static double cos(double a) //cosα。余弦函数 


 
static double cosh(double x)//双曲余弦值。  
ststatic double tanh(double x)//双曲线余弦
static double sinh(double x)//双曲正弦值。


static double toDegrees(double angrad)//弧度转换成角度。  
static double toRadians(double angdeg)//角度转换成弧度。  


static double atan2(double y, double x)
//方法用于将矩形坐标 (x, y) 转换成极坐标 (r, theta),返回所得角 theta。该方法通过计算 y/x 的反正切值来计算相角 theta,范围为从 -pi 到 pi。

5、两数相加

static int addExact(int x, int y)//返回参数的总和,抛出一个异常,如果结果溢出一个 int。  
static long addExact(long x, long y)//返回参数的总和,抛出一个异常,如果结果溢出 long。  

6、两数相减

static int subtractExact(int x, int y)
static long subtractExact(long x, long y)

7、除法

//两数相除返回不大于的最大整数
static int floorDiv(int x, int y)
static long floorDiv(long x, long y)

案例

System.out.println(Math.floorDiv(5,2));2

8、数学公式

static double log(double x) //ln x    
static double log10(double x)  //log10(x) 
static double log1p(double x) //ln(x + 1) 
static double exp(double x) //ex 
static double expm1(double x) //ex - 1 
static double pow(double a, double b)// ab 
static double scalb(double d, int scaleFactor)  //d × 2scaleFactor 
static float scalb(float f, int scaleFactor) //d × 2scaleFactor 
static double sqrt(double x) //平方根。 2√x 
static double cbrt(double x)//立方根。 3√x 
static double hypot(double x, double y) //2√x2 +y2 
static double copySign(double magnitude, double sign) //一个值,带有 magnitude的数值,sign 的符号。 
static float copySign(float magnitude, float sign)//一个值,带有 magnitude的数值,sign 的符号。 
static int decrementExact(int x)// x-1 
static long decrementExact(long x)// x-1 
static long incrementExact(long x)// x+1 
static int incrementExact(int x)// x+1 
static int floorMod(int x, int y)//  x - floorDiv(x, y) * y 
static long floorMod(long x, long y)  //  x - floorDiv(x, y) * y 

9、求最值

//求最大值
static double max(double a, double b) 
static float max(float a, float b)
static int max(int a, int b)
static long max(long a, long b)

  
//求最小值
static double min(double a, double b)
static float min(float a, float b)
static int min(int a, int b)
static long min(long a, long b)

10、两数相乘

static int multiplyExact(int x, int y)//返回参数的产品,抛出一个异常,如果结果溢出一个 int。  
static long multiplyExact(long x, long y)//返回参数的产品,抛出一个异常,如果结果溢出 long。

11、求余

static double IEEEremainder(double f1, double f2)//f1 除以 f2 的余数。

案例

System.out.println(Math.IEEEremainder(7,4));-1.0
System.out.println(7%4);3
System.out.println(Math.IEEEremainder(7,3));1.0
System.out.println(7%3);1

12、数值近似

//四舍五入
static long round(double a)
static int round(float a)
static double rint(double a)

static double ceil(double a)向上取整
static double floor(double a) 向下取整

案例

          Math.floor    Math.round       Math.ceil
1.4         1              1                2
1.5         1              2                2
1.6         1              2                2
-1.4       -2             -1               -1  
-1.5       -2             -1               -1
-1.6       -2             -2               -1

13、求符号数

//返回参数的符号函数;如果参数为 0,则返回 0;如果参数大于 0,则返回 1.0;如果参数小于 0,则返回 -1.0。
static double signum(double d)
static float signum(float f)

14、符号取反

static int negateExact(int a)//返回自变量的否定,抛出一个异常,如果结果溢出一个 int。  
static long negateExact(long a)//返回自变量的否定,抛出一个异常,如果结果溢出 long。   

四、 StringJoiner

StringJoiner用于构造由分隔符分隔的字符序列,并且可选地从提供的前缀开始并以提供的后缀结尾。
在此之前添加一些东西到StringJoiner ,其sj.toString()方法,默认情况下,返回prefix + suffix 。 但是,如果调用了setEmptyValue方法,则将返回提供的emptyValue 。

1、构造方法

//构造一个 StringJoiner与其中不带字符,没有 prefix或 suffix ,以及所提供的副本 delimiter
StringJoiner(CharSequence delimiter)
//构造一个 StringJoiner使用的供给拷贝在不带字符 prefix , delimiter和 suffix 
StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)

2、方法摘要

StringJoiner	add(CharSequence newElement)//将给定的副本 CharSequence值作为下一个元素 StringJoiner值。
int	length()//返回此 StringJoiner的 String表示的长度。
StringJoiner	merge(StringJoiner other)//添加给定的 StringJoiner的内容,没有前缀和后缀作为下一个元素,如果它是非空的。
StringJoiner	setEmptyValue(CharSequence emptyValue)//设置默认值
String	toString()//返回当前值,如果当前值为空,则返回设置(setEmptyValue)的默认值,如果没有设置默认值,那么就返回前后缀

3、案例

StringJoiner joiner1 = new StringJoiner(",", "{", "}");
joiner1.add("Red").add("Green").add("Blue");
System.out.println(joiner1);

StringJoiner joiner2 = new StringJoiner(",", "#", "#");
//没有设置默认值输出
System.out.println(joiner2);//##
//设置默认值
joiner2.setEmptyValue("dog");
System.out.println(joiner2);//dog

joiner2.add("son");
System.out.println(joiner2);//#son#

joiner1.merge(joiner2);
System.out.println(joiner1);//{Red,Green,Blue,son}
System.out.println(joiner2);//#son#

你可能感兴趣的:(JAVA基础)