Math类概述及其成员方法
Math:用于数学运算的类
成员变量:
public static final double pI
public static final double E
成员方法:
public static int abs(int a):绝对值
public static double ceil(double a):向上取整
public static double floor(double a):向下取整
public static int max(int a,int b):最大值
public static double pow(double a,double b):a的b次幂
public static double random():随机数[0.0,1,0]
public static int round(float a) :四舍五入
public static double sqrt(double a):正平方根
package cn.itcast01;
public class MathDemo {
public static void main(String[] args) {
//public static final double PI
System.out.println("PI:"+Math.PI);
//public static final double E
System.out.println("E:"+Math.E);
System.out.println("-------------------");
//public static int abs(int a):绝对值
System.out.println("abs:"+Math.abs(10));
System.out.println("abs:"+Math.abs(-10));
//public static double ceil(double a):向上取整
System.out.println("ceil:"+Math.ceil(2.22));
//public static double floor(double a):向下取整
System.out.println("floor:"+Math.floor(2.97));
//public static int max(int a,int b):最大值
System.out.println("max:"+Math.max(3, 5));
//需求:我要获取三个数据中的最大值
//方法的嵌套使用
System.out.println("max:"+Math.max(Math.max(12, 23), 18));
//public static double pow(double a,double b):a的b次幂
System.out.println("pow:"+Math.pow(2, 4));
//public static double random():随机数[0.0,1,0]
System.out.println("random:"+Math.random());
//获取一个1-100之间的随机数
System.out.println("random:"+((int)(Math.random()*100)+1));
//public static int round(float a) :四舍五入
System.out.println("round:"+Math.round(5.5));
//public static double sqrt(double a):正平方根
System.out.println("sqrt:"+Math.sqrt(5.5));
}
}
如何获取任意范围类的随机数案例
需求:
请设计一个方法,可以实现获取任意范围内的随机数。
分析:
A:键盘录入两个数据
int start;
int end;
B:想办法获取在Start到end之间的随机数
我写一个功能实现这个效果,得到一个随机数。(int)
C:输出这个随机数
package cn.itcast02;
import java.util.Scanner;
public class MathDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入开始数:");
int start= sc.nextInt();
System.out.println("请输入结束数:");
int end = sc.nextInt();
for (int x=0;x<100;x++) {
//调用功能
int num = getRandom(start,end);
//输出结果
System.out.println(num);
}
}
/*
* 写一个功能
* 两个明确:
* 返回值类型:int
* 参数列表:int start , int end
*/
public static int getRandom(int start ,int end) {
// 1-100之间的随机数
//int number = (int)(Math.random()*100)+1;
//int number = (int) (Math.random()*end)+start;
//发现有问题了
int number = (int)(Math.random()*(end-start+1))+start;
return number;
}
}
Random类的概述和方法使用
Random:产生随机的类
构造方法:
public Random ():没有给种子,用的是默认种子,是当前时间的毫秒值
public Random(long seed):给出指定的种子
成员变量:
public int nextInt():返回的是int范围内的随机数
public int nextInt(int n):返回的是[0,n]范围的内随机数
package cn.itcast01;
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
//创建对象
Random r = new Random();
for(int x =0;x<10;x++) {
//int num = r.nextInt();
int num = r.nextInt(100)+1;
System.out.println(num);
}
}
}
System类中垃圾回收的方法gc()的讲解
System类包含一些有用的类字段和方法,它不能被实例化。
方法:
public static void gc():运行垃圾回收器
public static void exit(int status)
public static long currentTimeMillis()
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
package cn_itcast01;
public class SystemDemo {
public static void main(String[] args) {
Person p = new Person("赵雅芝",60);
System.out.println(p);
p = null;//让P不在指定堆内存
System.gc();
}
}
package cn_itcast01;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
@Override
protected void finalize() throws Throwable {
// TODO Auto-generated method stub
System.out.println("当前的对象被回收了"+this);
super.finalize();
}
}
System类中的exit()和currentTimeMillis()的讲解
System类包含一些有用的类字段和方法,它不能被实例化。
方法:
public static void gc():运行垃圾回收器
public static void exit(int status):终止当前正在运行的Java虚拟机,参数用作状态码,根据惯例,非0的状态码表示异常终止
public static long currentTimeMillis():返回以毫秒为单位的当前时间
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
package cn.itcast02;
public class SystemDemo {
public static void main(String[] args) {
// System.out.println("我们都喜欢林青霞(东方不败)");
// System.exit(0);
// System.out.println("我们也喜欢赵丽颖(陆贞)");
//System.out.println(System.currentTimeMillis());
//单独得到这样的实际目前对我们来说意义不大
//那么,它到底有什么用呢?
//要求:请大家给我统计这段程序的运行时间
long start =System.currentTimeMillis();
for(int x =0;x<=100000;x++){
System.out.println("hello"+x);
}
long end = System.currentTimeMillis();
System.out.println("共耗时:"+(end-start)+"毫秒");
}
}
System类中arraycopy()的讲解
System类包含一些有用的类字段和方法,它不能被实例化。
方法:
public static void gc():运行垃圾回收器
public static void exit(int status):终止当前正在运行的Java虚拟机,参数用作状态码,根据惯例,非0的状态码表示异常终止
public static long currentTimeMillis():返回以毫秒为单位的当前时间
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
src:源数组
srcPos:源数组中的起始位置
dest:目标数组
destPos:目标数组中的起始位置
length:要复制的数组元素的数量
package cn.itcast03;
import java.util.Arrays;
public class SystemDemo {
public static void main(String[] args) {
//定义数组
int [] arr = {11,22,33,44,55};
int [] arr2 = {6,7,8,9,10};
System.arraycopy(arr,1,arr2,2,2);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(arr2));
}
}