数学操作类、数组操作类、大数据类、其他类MD5

一、数学操作类

在这里插入图片描述
代码演示如下:

public class MathClass {

	@Test
	void math01() {
		// 圆周率
		System.out.println(Math.PI);
		// 底数
		System.out.println(Math.E);
	}

	// 方法的使用
	@Test
	void math02() {
		// 对于数字的操作
		Byte b = -10;// 自动装箱
		System.out.println("三次方" + Math.cbrt(1000));// 三次方10.0
		System.out.println("最大整数" + Math.ceil(10.4));// 最大整数11.0

	}

	// random类
	@Test
	void math03() {
		// 随机数
		Random random = new Random();// 默认随机数生成器
		// 获取随机数
		// 所有int类型的范围值
		System.out.println(random.nextInt());
		// 所有double类型的范围值
		System.out.println(random.nextDouble());
		// 所有float类型的范围值
		System.out.println(random.nextFloat());
		// 所有Boolean类型的范围值
		System.out.println(random.nextBoolean());

		// 0到指定正数之间的随机数
		System.out.println(random.nextInt(10));

		// 将得到的随机数放到指定的byte数组中
		byte[] b = new byte[10];
		random.nextBytes(b);
		System.out.println(b[0]);
	}

	

}

注意事项:

  • Math是用来对数字及三角函数进行操作的,所以方法都是静态的
  • Random主要是用来获取随机数的,如果使用种子,多个不同随机数生成器会得到相同的随机数
// 使用同一个种子 作为随机数的生成器  
	@Test
	void math06() {
		Random random=new Random(200);//默认随机数生成器 
		Random random01=new Random(200);//默认随机数生成器 
		System.out.println(random.nextInt(10));
		System.out.println(random01.nextInt(10));
		System.out.println(random.nextInt(10));
		System.out.println(random01.nextInt(10));
	}
	

二、数组操作类 Arrays

  • 该类专门用来操作数组
  • 数组可以存放任意类型的数据
    在这里插入图片描述

1、方法

填充

  • fill( Object [] a,int fromIndex,int toIndex,Object val);
    a - 要填充的数组。
    fromIndex - 要使用指定值填充的第一个元素的索引(包括)。
    toIndex - 要使用指定值填充的最后一个元素的索引(不包括)。
    val - 要存储在数组的所有元素中的值。
    在这里插入图片描述
  • fill( Object [ ] a ,Object val);
    a - 要填充的数组。
    val - 要存储在数组所有元素中的值。
    在这里插入图片描述
    排序
  • sort( Object [] a);
    在这里插入图片描述
  • sort( Object [] a, int fromIndex,int toIndex);
    在这里插入图片描述
    查询
  • binarySearch(Object[] a, Object key)
    a - 要搜索的数组。
    key - 要搜索的值。
    在这里插入图片描述
    复制
  • copyOf(byte[] original, int newLength) ;
    在这里插入图片描述

比较

  • equals(Object[] a, Object[] a2) ;
    在这里插入图片描述

具体操作见代码

int  [] nums = new int [] {10,20,30,10,3,40};
	
	//填充或者替换
	@Test
	void fill() {
		//100  将nums中的所有元素都替换掉
		Arrays.fill(nums, 100);
		System.out.println(Arrays.toString(nums));//[100, 100, 100, 100, 100, 100]
		
		//替换部分元素值
		/*
		 * 第一个参数:要操作的数组
		 * 第二个参数:起始下标
		 * 第三个参数:结束下标
		 * 第四个参数:值
		 */
		Arrays.fill(nums, 0,3,50);
		System.out.println(Arrays.toString(nums));//[50, 50, 50, 100, 100, 100]
	}
	
	
	
	//排序,底层是冒泡排序
	@Test
	void sort() {
		
		//正序排列
		Arrays.sort(nums);
		System.out.println("排序后的结果"+Arrays.toString(nums));//排序后的结果[3, 10, 10, 20, 30, 40]
		//反向输出
		for(int i = nums.length-1;i>=0;i--) {
		    System.out.print(nums[i]+"--");//40--30--20--10--10--3--
		}
	
	}
	
	
	//查询
	@Test
	void select() {
		//返回值是找到的元素下标
		int binarySearch = Arrays.binarySearch(nums,20);
		System.out.println(binarySearch);//1
	}
	
	
	
	
	//复制
	@Test
	void  copy() {
		int [] nums = new int [] {10,20,30,10,3,40};
		int [] newnum = new int[6];
		
		//自动得到一个新的数组
		/*
		 * 原数组
		 * 复制几个元素
		 */
		int[] copyOf = Arrays.copyOf(nums, 3);
		System.out.println(Arrays.toString(copyOf));//[10, 20, 30]
	}
	
	
	//比较。比较的是数组中的元素值,元素一样,数组就相等
	@Test
	void  equals() {
		int [] nums = new int [] {10,20,30,10,3,40};
		int  [] newnum = new int[6];
		int  [] nums01 = new  int [] {10,20,30,10,3,40};
		System.out.println(Arrays.equals(nums, newnum));//false
		System.out.println(Arrays.equals(nums, nums01));//true
	}

三、大数据类

  • java的基本数据类型无法表示的类,数字
  • 整数型,BigInteger,底层使用的将字符串转为二进制形式,进行底层计算
@Test
	void  biginteger() {
		BigInteger   big01 = new BigInteger("1234567890123123456789");
		BigInteger   big02 = new BigInteger("1234567890123123456789");
		
		//使用BigInteger的数字计算方法
		BigInteger add = big01.add(big02);
		System.out.println("相加"+add);//相加2469135780246246913578
		
		BigInteger multiply = big01.multiply(big02);
		System.out.println("相乘"+multiply);//相乘1524157875323060632530163196031672750190521
		
		BigInteger divide = big01.divide(big02);
		System.out.println("相除"+divide);//相除1
		
		BigInteger remainder = big01.remainder(big02);
		System.out.println("取余"+remainder);//取余0
	}

  • 小数型,使用float或者double进行运算,由于小数精度的问题,损失精度
@Test
	void  bigDecimal() {
		System.out.println(0.09+0.01);
		System.out.println(0.09-0.01);
		System.out.println(0.09*0.01);
		System.out.println(0.09/0.01);
		
		//bigDecimal操作
		BigDecimal  bd01 = new BigDecimal("0.09");
		BigDecimal  bd02 = new BigDecimal("0.01");
		
		System.out.println("相加"+bd01.add(bd02));//相加0.10
		System.out.println("相乘"+bd01.multiply(bd02));//相乘0.0009
		System.out.println("相除"+bd01.divide(bd02));//相除9
	}

四、其他类MD5

将密码使用特定的方式进行转换,称为加密
1、16进制转换
java中提供了一个类:MessageDigest
步骤如下:

  • 创建加密原则
  • 将初始密码放入加密类中
  • 选择一种展示方式
    2、Base64加密方式
    java中提供了一个类:Base64
    步骤如下:
  • 创建加密器
  • 对铭文进行加密

	
	
	String  password = "123456";
	
	@Test
	void  jinzhi() {
		try {
			//创建加密原则
			//返回一个摘要对象实现指定的摘要算法
			MessageDigest md = MessageDigest.getInstance("md5");
			//将初始密码放入加密类中
			//使用指定的字节数组来更新摘要
			md.update(password.getBytes());
			//选择一种展现方式
			BigInteger  bigInteger = new BigInteger(1,md.digest());
			//使用具体的进制方式
			System.out.println(bigInteger.toString(16));//e10adc3949ba59abbe56e057f20f883e

			
		} catch (NoSuchAlgorithmException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	
	//base64加密方式,可逆加密方式
	@Test
	void   base64() {
		//获取加密器
		//创建解码器
		Encoder encoder = Base64.getEncoder();
		//创建解码器
		Decoder decoder = Base64.getDecoder();
		//编码
        String  encodeToString = encoder.encodeToString(password.getBytes());
        System.out.println(encodeToString);//MTIzNDU2
        
        
        //怎么进行解密
        byte[] decode = decoder.decode("MTIzNDU2");
        System.out.println(new String(decode));//123456
		
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值