数学操作类(Math,Random),数组操作类

数学操作类

一.Math

1.属性

  1. static double
    E double 值比任何其他值更接近于 e,即自然对数的底数。
  2. static double
    PI double 值比任何其他值更接近圆的周长与直径之比 pi。
@Test
	void test() {
		System.out.println(Math.PI);//3.141592653589793
		System.out.println(Math.E);//2.718281828459045
		//将PI变成3.14
		String valueOf = String.valueOf(Math.PI).substring(0,4);
		Double valueOf2 = Double.valueOf(valueOf);
		System.out.println(valueOf2);//3.14
	}

2.常用方法

  1. static double
    abs(double a) 返回 double 值的绝对值。
  2. static double
    cbrt(double a) 返回 double 值的立方根。
  3. static double
    ceil(double a) 返回最小的(最接近负无穷大)double 值,该值大于或等于参数,并且等于某个整数。
  4. static double
    exp(double a) 返回欧拉数 e 的 double 次幂的值。
  5. static double
    expm1(double x) 返回 ex -1。
  6. static double
    floor(double a) 返回最大的(最接近正无穷大)double 值,该值小于或等于参数,并且等于某个整数。
  7. static double
    log(double a) 返回(底数是 e)double 值的自然对数。
  8. static double
    max(double a, double b) 返回两个 double 值中较大的一个。
  9. static double
    min(double a, double b) 返回两个 double 值中较小的一个。
  10. static double
    pow(double a, double b) 返回第一个参数的第二个参数次幂的值。
  11. static double
    random() 返回带正号的 double 值,大于或等于 0.0,小于 1.0。
  12. static double
    sin(double a) 返回角的三角正弦。
  13. static double
    cos(double a) 返回角的三角余弦。
  14. static double
    toRadians(double angdeg) 将用度数测量的角转换为近似相等的用弧度测量的角。
    在这里插入图片描述
//常用方法
	@Test
	void test01() {
		System.out.println(Math.E);//底数2.718281828459045
		Byte b=-10;
		Byte b1=new Byte((byte)10);
		System.out.println("b的绝对值:"+Math.abs(b));//b的绝对值:10
		System.out.println("1000的三次方根:"+Math.cbrt(1000));//1000的三次方根:10.0
		System.out.println("10.4的最大整数:"+Math.ceil(10.4));//10.4的最大整数:11.0
		System.out.println("-10.5的最大整数:"+Math.ceil(-10.5));//-10.5的最大整数:-10.0
		System.out.println("18.5的最小整数:"+Math.floor(18.5));//18.5的最小整数:18.0
		System.out.println("-15.5的最大整数:"+Math.floor(-15.5));//-15.5的最大整数:-16.0
		System.out.println("e的2次幂的值:"+Math.exp(2));//e的2次幂的值:7.38905609893065
		System.out.println("e的2次幂的值-1:"+Math.expm1(2));//e的2次幂的值-1:6.38905609893065
		System.out.println("e的自然对数:"+Math.log(Math.exp(2)));//e的自然对数:2.0
		System.out.println("最大值:"+Math.max(100, 200));//最大值:200
		System.out.println("最小值:"+Math.min(100, 200));//最小值:100
		System.out.println("10的2次幂值 :"+Math.pow(10, 2));//10的2次幂值 :100.0
		System.out.println("随机数字 0.0--1.0:"+(Math.random()));//随机数字 0.0--1.0:0.7148606323615798
		System.out.println("随机数字 0--10:"+(int)(Math.random()*10));//随机数字 0--10:2
		System.out.println("随机数字1--10:"+(int)(Math.random()*10+1));//随机数字1--10:1
		// 三角函数主要参数是用弧度测量的角   
		System.out.println("30正弦:"+Math.sin(Math.toRadians(30)));//30正弦:0.49999999999999994
		System.out.println("60余弦:"+Math.cos(Math.toRadians(60)));//60余弦:0.5000000000000001
	}

二.random

1.构造方法

  1. Random() 创建一个新的随机数生成器。
  2. Random(long seed) 使用单个 long 种子创建一个新随机数生成器: public Random(long seed) { setSeed(seed); } next 方法使用它来保存随机数生成器的状态。

2.常用方法

  1. boolean
    nextBoolean() 返回下一个伪随机数,它是从此随机数生成器的序列中取出的、均匀分布的 boolean 值。
  2. void
    nextBytes(byte[] bytes) 生成随机字节并将其置于用户提供的字节数组中。
  3. double
    nextDouble() 返回下一个伪随机数,它是从此随机数生成器的序列中取出的、在 0.0 和 1.0之间均匀分布的 double 值。
  4. float
    nextFloat() 返回下一个伪随机数,它是从此随机数生成器的序列中取出的、在 0.0 和 1.0 之间均匀分布的 float 值。
  5. int
    nextInt() 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
  6. int
    nextInt(int n) 返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。
  7. long
    nextLong() 返回下一个伪随机数,它是从此随机数生成器的序列中取出的、均匀分布的 long 值。
// Random类 
	@Test
	void test02() {
		Random random=new Random();
		//获取随机数
		//获取所有int类型的范围值 
		System.out.println(random.nextInt());//813393314
		//获取所有boolean类型的范围值 
		System.out.println(random.nextBoolean());//false
		//获取所有float类型的范围值 
		System.out.println(random.nextFloat());//0.5209568
		//获取所有double类型的范围值 
		System.out.println(random.nextDouble());//0.9409616028541373
		for (int i = 0; i < 10; i++) {
			//获取0--指定正数间的随机数
			System.out.print(random.nextInt(10));//1666920470
		}
		// 将得到的随机数方法指定的byte数组中 
		byte[] b=new byte[10];
		random.nextBytes(b);
		System.out.println(b[0]);//39
	}
  • 使用Random生成一个随机数字,根据随机数字作为下标,去数组中获取数据
@Test
	void test03() {
		//创建数组,保存信息
		String [] stu=new String[] {"zs-18","ls-17","ww-20","as-11"};
		//获取随机数
		Random random=new Random();//默认随机数生成器
		int nextInt = random.nextInt(stu.length);
		System.out.println(stu[nextInt]);//as-11
	}
  • 使用同一个种子作为随机数的生成器
@Test
	void test04() {
		Random random=new Random(200);
		Random random01=new Random(200);
		System.out.println(random.nextInt(10));//9
		System.out.println(random01.nextInt(10));//9
		System.out.println(random.nextInt(10));//1
		System.out.println(random01.nextInt(10));//1
	}

总结 :
Math是用来对数字及三角函数进行操作,所以方法都是静态的 。
Random 主要是用来获取随机数的,如果使用种子,多个不同随机数生成器可能会得到相同的随机数。

数组操作类 Arrays

一.填充

  1. static void
    fill(Object[] a, int fromIndex, int toIndex, Object val) 将指定的 Object 引用分配给指定 Object 数组指定范围中的每个元素。
  2. static void
    fill(Object[] a, Object val) 将指定的 Object 引用分配给指定 Object 数组的每个元素。
//   填充/替换
	@Test
	void test() {
		int [] nums=new int[] {10,41,25,47,3,9};
		//将nums中的所有元素替换
		Arrays.fill(nums, 100);
		System.out.println(Arrays.toString(nums));//[100, 100, 100, 100, 100, 100]
		// 替换部分元素值    
		//a:要操作的数组;fromIndex:起始下标;toIndex:结束下标; val:值 
		Arrays.fill(nums, 0, 3, 11);
		System.out.println(Arrays.toString(nums));//[11, 11, 11, 100, 100, 100]
	}

二.排序

  1. static void
    sort(Object[] a) 根据元素的自然顺序,对指定对象数组按升序进行排序。
  2. static void
    sort(Object[] a, int fromIndex, int toIndex) 根据元素的自然顺序,对指定对象数组的指定范围按升序进行排序。
//排序的底层是冒泡排序
	@Test
	void test01() {
		int [] nums=new int[] {10,41,25,47,3,9};
		Arrays.sort(nums);
		System.out.println("排序后"+Arrays.toString(nums));//排序后[3, 9, 10, 25, 41, 47]
		int [] num=new int[] {10,41,25,47,3,9};
		Arrays.sort(num,0,2);
		System.out.println("排序后"+Arrays.toString(num));//排序后[10, 41, 25, 47, 3, 9]
		//反向输出
		for (int i = nums.length-1; i >=0; i--) {
			System.out.print(nums[i]);//4741251093
		}
	}

三.查询

  1. static int
    binarySearch(Object[] a, Object key) 使用二进制搜索算法来搜索指定数组,以获得指定对象。
  • 使用binarySearch(Object[] a, Object key)方法一定要先进行排序
//查询
	@Test
	void test02() {
		int [] nums=new int[] {10,41,25,47,3,9};
		//以前通过for循环来查找
		for (int i : nums) {
			if(i==25) {
				System.out.println(i);//25
			}
		}
		//使用binarySearch方法一定要先进行排序
		 Arrays.sort(nums);
		//返回值是找到的元素下标(第一个出现的下标 ) 
		int search = Arrays.binarySearch(nums, 41);
		System.out.println(search);//4
		
	}

四.复制

  1. static String
    toString(Object[] a) 返回指定数组内容的字符串表示形式。
  2. static void (System的方法)
    arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
  • src - 源数组。
  • srcPos - 源数组中的起始位置。
  • dest - 目标数组。
  • destPos - 目标数据中的起始位置。
  • length - 要复制的数组元素的数量。
  1. static int[]
    **copyOf(int[] original, int newLength) (JDK1.6以后)**复制指定的数组,截断或填充零(如果必要)所以副本具有指定的长度。
  • original -数组被复制
  • newLength -要返回的副本的长度
//复制
	@Test
	void test03() {
		int [] nums=new int[] {10,41,25,47,3,9};
		int [] newNums=new int[6];
		System.arraycopy(nums,0,newNums,0,6);
		System.out.println(Arrays.toString(newNums));//[10, 41, 25, 47, 3, 9]
		// 自动得到一个新的数组,length:原数组从第一个元素开始要几个  
		int[] copyOf = Arrays.copyOf(nums, 3);
		System.out.println(Arrays.toString(copyOf));//[10, 41, 25]
	}

五.比较

  • 比较的是数组中的元素值,元素一样,数组就相等
  1. static boolean
    equals(Object[] a, Object[] a2) 如果两个指定的 Objects 数组彼此相等,则返回 true。
@Test
	void test04() {
		int [] nums=new int[] {10,41,25,47,3,9};
		int [] newNums=new int[6];
		int [] nums01=new int[] {10,41,25,47,3,9};
		int [] nums02=new int[] {10,47,3,9};
		System.out.println(Arrays.equals(nums, newNums));//false
		System.out.println(Arrays.equals(nums, nums01));//true
		System.out.println(Arrays.equals(nums, nums02));//false
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值