本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、包装类和常用类
1.1 常用类(聚合函数)
1.1.1 Math
概念: 是一个数学类,这个类中封装了很多用来做数学计算的方法。当我们需要使用到数学计算的时候,要能够想到这个类。这个类中有很多封装好的数学公式,而且,都是静态方法,方便调用。
1.1.2 常用静态类
| 属性 | 描述 | 值 |
|---|---|---|
| PI | 圆周率 | 3.14159265358979323846 |
| E | 自然对象 | 2.7182818284590452354 |
1.1.3 常用方法
| 方法 | 参数 | 描述 |
|---|---|---|
| abs | int/long/float/double | 计算一个数字的绝对值 |
| max | (int,int)/(long,long)/(float,float)/(double,double) | 计算两个数的最大值 |
| min | (int,int)/(long,long)/(float,float)/(double,double) | 计算两个数的最小值 |
| round | float/double | 计算一个数的四舍五入 |
| floor | float/double | 计算一个数的向下取整 |
| ceil | float/double | 计算一个数的向上取整 |
| pow | (double,double) | 计算一个数的指定次幂 |
| sqrt | double | 计算一个数的平方根 |
| random | - | 获取(0,1)范围内的浮点型随机数 |
1.1.4实例代码
package com.laity.basicSyntax.day6.aCommonClasses;
/**
* @author : Laity
* @Project: JavaLaity
* @Package com.laity.basicSyntax.day6.aCommonClasses
* @date Date : 2021年12月04日 0:23
* @Description: 常用类Math的使用
*/
public class MathUsage {
public static void main(String[] args) {
mathRandom();
//
}
/**
* 关于Math类常用的属性和方法
*/
public static void MathMethod() {
// 1.关于Math的属性
System.out.println(Math.PI);
System.out.println(Math.E);
// 2.常用方法
// 2.1 求绝对值
System.out.println(Math.abs(-10));
int[] array = {1, 2, 3, 4, 5};
// 2.2 求最大值
System.out.println(Math.max(array[1], array[3]));
// 2.3 求最小值
System.out.println(Math.min(array[1], array[3]));
// 2.4 四舍五入
System.out.println(Math.round(3.1));
// 2.5 向上取整
Math.ceil(3.14); // 找到第一个比3.14大的整数
// 2.6 向下取整
Math.floor(3.14); // 找到第一个比3.14小的整数
// 2.7 指定次幂
System.out.println(Math.pow(3, 3));
// 2.8 计算平方根
System.out.println(Math.sqrt(2)); // 根号几
// 2.9 计算一个数的3次方根
System.out.println(Math.pow(27, 1.0 / 3.0));
// 3.0 随机数 0-1 ---> float
System.out.println(Math.random());
}
public static void mathRandom() {
for (int i = 0; i < 10; i++) {
System.out.println(Math.random());
}
// 生成0-100 的整型随机数
for (int i = 0; i < 10; i++) {
System.out.println((int) (Math.random() * 100));
}
// 拓展需求 50-100
for (int i = 0; i < 10; i++) {
System.out.println((int)(Math.random() * 50 + 50));
}
}
}
1.2 常用类Random
1.2.1 概念
是一个专门负责产生随机数的类。在java中,random类在 java.util 包中。在使用之前,需要先导包。
- 其实,随机数的产生,是一个由固定的随机数算法的。带入一个随机数种子,能够生成一个随机数列表。但是由于算法是固定的,因此会有一个“BUG”:比如
- 随机数的种子相同,则生成的随机数列也是完全相同。
1.2.2 常用方法
| 方法 | 参数 | 描述 |
|---|---|---|
| Random | 无 | 通过将系统时间作为随机数种子,实例化一个Random对象 |
| Random | int | 通过一个指定的随机数种子,实例化一个Random对象 |
| nexInt | int | 生成一个[0, bounds) 范围内的整型随机数 |
| nextInt | 无 | 生成一个int范围内的随机数 |
| nextFloat | 无 | 生成一个[0,1) 范围内的float类型的随机数 |
| nextDouble | 无 | 生成一个[0,1) 范围内的double类型的随机数 |
| nextBoolean | 无 | 随机生成一个boolean类型数值 |
1.2.3 代码实例
package com.laity.basicSyntax.day6.bRandom;
import java.util.Random;
/**
* @author : Laity
* @Project: JavaLaity
* @Package com.laity.basicSyntax.day6.bRandom
* @date Date : 2021年12月04日 0:57
* @Description: Random关键字
*/
public class RandomUsage {
public static void main(String[] args) {
randomSeed();
}
/**
* 带有种子的随机数
*/
private static void randomSeed(){
// 1. 通过一个随机数种子,实例化一个Random对象
Random random = new Random(1);
// 2. 生成10个100范围内的随机数
for (int i = 0; i < 10; i++) {
System.out.print(random.nextInt(100)+",");
}
System.out.println();
for (int i = 0; i < 10; i++) {
System.out.print(random.nextInt(100)+",");
}
}
/**
* random 普通方法
* nanotime 系统时间 以nanotime为种子
*/
private static void randomBasic(){
// 1. 实例化一个对象
Random random = new Random();
// 2. 使用Random中的方法,生成随机数
// random.nextInt(); // 生成int范围内的随机数[-2^31, 2^31-1]
// random.nextInt(3); // 生成 [0, bound) 范围内的随机数
// random.nextBoolean(); // 随机生成一个boolean类型数值
// random.nextDouble(); // 生成一个[0,1) 范围内的double类型的随机数
// random.nextFloat(); // 生成一个[0,1) 范围内的float类型的随机数
// 3. 需求:生成20个[0, 100) 范围内的随机数
for (int i = 0; i < 20; i++) {
System.out.println(random.nextInt(100));
}
// 4. 需求:生成20个[50, 100) 范围内的随机数
System.out.println(random.nextInt(50) + 50);
}
}
1.3 常用类BigInteger、BigDecimal
1.3.1 概念
这两个类都是用来表示数字的类,BigInteger表示整型数字,、BigDecimal表示浮点型数字。这两个类,可以用来描述非常、非常、非常大的数字。例如
整数,long是最大的表示范围,但是即便是long型,也有它表示不了的情况。、BigInteger就是可以表示任意大小的数字。
BigInteger:表示整型数字,不限范围。
BigDecimal:表示浮点型,不限范围,不限小数点后面的数字。
1.3.2 常用方法
package com.laity.basicSyntax.day6.cBigIntegerClasses;
import java.math.BigInteger;
/**
* @author : Laity
* @Project: JavaLaity
* @Package com.laity.basicSyntax.day6.cBigIntegerClasses
* @date Date : 2021年12月04日 1:45
* @Description: BigInteger 与 BigDecimal的使用
*/
public class BigIntegerUsage {
public static void main(String[] args) {
// 实例化一个BigInteger对象:描述相当大的数字
BigInteger biginteger = new BigInteger("1111111111111111111111111111111111111111111111111111111111111111111111");
BigInteger biginteger1 = new BigInteger("2222222222222222222222222222222222222222222222222222222222222222222222");
System.out.println(biginteger);
System.out.println(biginteger1);
// 四则运算
System.out.println(biginteger1.add(biginteger)); // 加
System.out.println(biginteger1.subtract(biginteger)); // 减法
System.out.println(biginteger1.multiply(biginteger)); // 乘法
System.out.println(biginteger1.divide(biginteger)); // 除法
// 除法 保留商和余数,商存在结果的数组的第0位,余数存在结果的数组的第一位
BigInteger[] bigIntegers = biginteger1.divideAndRemainder(biginteger);
System.out.println(bigIntegers[0]);
System.out.println(bigIntegers[1]);
}
}
// 将BigInteger转型成为其他的基本数据类型的数据
// 也可以转字符串 toString()
// BigDecimal 是一样的
1.4 常用类Date
1.4.1 概念
是一个用来描述时间、日期的类。在java.util包中!!!
1.4.2 常用方法
package com.laity.basicSyntax.day6.dDateClasses;
import java.util.Date;
/**
* @author : Laity
* @Project: JavaLaity
* @Package com.laity.basicSyntax.day6.dDateClasses
* @date Date : 2021年12月04日 2:03
* @Description: Date
*/
public class DateUsage {
public static void main(String[] args) {
// 1.实例化一个Date对象
Date date = new Date();
System.out.println(date); // 获取当前时间 :Sat Dec 04 02:06:37 CST 2021
System.out.println(date.getTime()); // 获取时间戳 1970-1-1 00:00:00:000 时间开始计算 到现在的毫秒
System.out.println(date.getTime()/1000/60/60/24/365); // 51年
System.out.println(date.getDate()); // 获取日期
System.out.println(date.getClass());
// 设置时间戳
date.setTime(123123114L);
System.out.println(date);
// 比较两个时间
Date date1 = new Date(2132341413123L);
System.out.println(date1);
// date在date1之前 true
System.out.println(date.before(date1));
}
}
1.5 常用类SimpleDateFormat
1.5.1 概念
是一个用来格式化时间的类。使用这个类,一般有两种操作
- 将一个Date对象,转变成指定格式的时间字符串。
- 将一个指定格式的字符串,转变成Date对象。
1.5.2 常用时间格式
在时间格式中,有几个常见的时间占位符。
| 占位符 | 描述 |
|---|---|
| y | 表示年。常用yyyy 表示长年份。 yy表示短年份。 |
| M | 表示月。常用MM表示两个占位符,如果月份不够两位,往前补0. |
| d | 表示日。常用dd 表示两个占位符,如果日期不够两位,往前补0. |
| H | 表示时。24小时制,常用HH表示两个占位符,如果不够两位,补0. |
| h | 表示时。12小时制,常用hh 表示两个占位符,如果不够两位,补0. |
| m | 表示分。常用mm表示两个占位符,如果不够两位,补0 |
| s | 表示秒。常用 ss 表示两个占位符,如果不够两位,补0. |
| S | 表示毫秒。常用SSS 表示三个占位符,如果毫秒不够三位,往前补0. |
1.5.3 常用方法
package com.laity.basicSyntax.day6.dDateClasses;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author : Laity
* @Project: JavaLaity
* @Package com.laity.basicSyntax.day6.dDateClasses
* @date Date : 2021年12月04日 2:31
* @Description: SimpleDateFormat 格式化时间类
*/
public class SimpleDateFormatUsage {
public static void main(String[] args) {
stringToDate();
}
/**
* 将日期对象,格式化为指定格式的字符串
*/
public static void dateToString(){
Date date = new Date();
// 格式化的字符串
String format = "yyyy年MM月dd日 HH:mm:ss";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
// System.out.println(simpleDateFormat);
String s = simpleDateFormat.format(date);
System.out.println(s);
}
/**
* 将一个指定格式的字符串,转变为一个日期对象
*/
public static void stringToDate(){
Date date = new Date();
String format = "2021年12月04日 02:43:55";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date parse = SimpleDateFormat.parse(format);
System.out.println(parse);
}
}