黑马程序员----------java高新技术之API概述

本文详细介绍了Java中Math类的基本数学运算方法,包括向上取整、向下取整、四舍五入及生成随机数等功能,并提供了示例代码。

                        ----------------------android培训java培训、期待与您交流! ----------------------

        API是(Application Programming Interface应用程序接口)的简称,API常用的类有一下几种,先总结一下几种比较简单的几个。

      API常用的类
Math,

    主要方法:

A:ceil( double d) : 向上取整数(该方法返回一个double类型的整数,其值是大于该参数的最小整数)

public static double ceil(double a)
返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。特殊情况如下:
  • 如果参数值已经等于某个整数,那么结果与该参数相同。
  • 如果参数为 NaN、无穷大、正 0 或负 0,那么结果与参数相同。
  • 如果参数值小于 0,但是大于 -1.0,那么结果为负 0。
注意,Math.ceil(x) 的值与 -Math.floor(-x) 的值完全相同。
参数:
a - 一个值。
返回:
最小(最接近负无穷大)浮点值,该值大于等于该参数,并等于某个整数。
package TestMath;

/*
 * Math 类包含用于执行基本数学运算的方法,如初等指数、对数
 * 、平方根和三角函数。
 * 
 * 
 * */
public class TestMath1 {
	public static void main(String[] args) {
		double d = 7.9;
		System.out.println(Math.ceil(d));
	}
}
    B:floor( double d) : 向下取整数(该方法返回一个double类型的整数,其值是小于参数的最大整数)

floor

public static double floor(double a)
返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。特殊情况如下:
  • 如果参数值已经等于某个整数,那么结果与该参数相同。
  • 如果参数为 NaN、无穷大、正 0 或负 0,那么结果与参数相同。
参数:
a - 一个值。
返回:
最大(最接近正无穷大)浮点值,该值小于等于该参数,并等于某个整数。
package TestMath;

/*
 * Math 类包含用于执行基本数学运算的方法,如初等指数、对数
 * 、平方根和三角函数。
 * 
 * 
 * */
public class TestMath1 {
	public static void main(String[] args) {
		double d = 7.9;
		System.out.println(Math.floor(d));
	}
}

    C:round(doubel d) : 四舍五入(该方法返回一个double类型的整数,其值是将参数四舍五入的整数值): 原理: 将参数加上1/2,再进行向下取整操作.

public static int round(float a)
返回最接近参数的 int。结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为 int 类型。换句话说,结果等于以下表达式的值:
(int)Math.floor(a + 0.5f)

特殊情况如下:

  • 如果参数为 NaN,那么结果为 0。
  • 如果结果为负无穷大或任何小于等于 Integer.MIN_VALUE 的值,那么结果等于 Integer.MIN_VALUE 的值。
  • 如果参数为正无穷大或任何大于等于 Integer.MAX_VALUE 的值,那么结果等于 Integer.MAX_VALUE 的值。
参数:
a - 要舍入为整数的浮点值。
返回:
舍入为最接近的 int 值的参数值。
package TestMath;

/*
 * Math 类包含用于执行基本数学运算的方法,如初等指数、对数
 * 、平方根和三角函数。
 * 
 * 
 * */
public class TestMath1 {
	public static void main(String[] args) {
		double d = 7.9;
		System.out.println(Math.round(d));
	}
}


    D:random() : 生成随机数 Syetem.out.println(random()*100 + 1); 随机生成一个1--100的整数.

public static double random()
返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。

第一次调用该方法时,它将创建一个新的伪随机数生成器,与以下表达式完全相同

new java.util.Random
之后,新的伪随机数生成器可用于此方法的所有调用,但不能用于其他地方。

此方法是完全同步的,可允许多个线程使用而不出现错误。但是,如果许多线程需要以极高的速率生成伪随机数,那么这可能会减少每个线程对拥有自己伪随机数生成器的争用。

返回:
大于等于 0.0 且小于 1.0 的伪随机 double 值。
package TestMath;

/*
 * Math 类包含用于执行基本数学运算的方法,如初等指数、对数
 * 、平方根和三角函数。
 * 
 * 
 * */
public class TestMath1 {
	public static void main(String[] args) {
		double d = 7.9;
		System.out.println(Math.random());
	}
}

Random,

public int nextInt()
返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。nextInt 的常规协定是,伪随机地生成并返回一个 int 值。所有 232 个可能 int 值的生成概率(大致)相同。

Random 类按如下方式实现 nextInt 方法:

 public int nextInt() {
   return next(32);
 }

返回:
下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
public int nextInt(int n)
返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。nextInt 的常规协定是,伪随机地生成并返回指定范围中的一个 int 值。所有可能的 nint 值的生成概率(大致)相同。Random 类按如下方式实现 nextInt(int n) 方法:
 public int nextInt(int n) {
     if (n<=0)
		throw new IllegalArgumentException("n must be positive");

     if ((n & -n) == n)  // i.e., n is a power of 2
         return (int)((n * (long)next(31)) >> 31);

     int bits, val;
     do {
         bits = next(31);
         val = bits % n;
     } while(bits - val + (n-1) < 0);
     return val;
  }

前面的描述中使用了不确定的词“大致”,因为 next 方法只是一个大致上独自选择位的无偏源。如果它是一个随机选择位的最佳源,那么给出的算法应该从规定范围完全一致地选择 int 值。

该算法稍微有些复杂。它拒绝那些会导致不均匀分布的值(由于 2^31 无法被 n 整除)。某个值被拒绝的概率取决于 n。最坏的情况是 n=2^30+1,拒绝的概率是 1/2,循环终止前的预计迭代次数是 2。

该算法特别对待 n 是 2 的次幂的情况:它从底层伪随机数生成器中返回正确的高位数。在不是特殊处理的情况中,将返回正确的 位数。众所周知,线性同余伪随机数生成器(比如此类所实现的)在其低位的值序列中周期较短。因此,如果 n 是 2 的次幂(幂值较小),则这种特殊情况将大大增加此方法的后续调用所返回的值序列长度。


参数:
n - 要返回的随机数的范围。必须为正数。
返回:
下一个伪随机数,在此随机数生成器序列中 0(包括)和 n(不包括)之间均匀分布的 int

Scanner

public int nextInt()
将输入信息的下一个标记扫描为一个 int

此方法调用 nextInt() 的行为与调用 nextInt(radix) 完全相同,其中的 radix 是此扫描器的默认基数。


返回:
从输入信息扫描的 int
public String nextLine()
此扫描器执行当前行,并返回跳过的输入信息。 此方法返回当前行的其余部分,不包括结尾处的行分隔符。当前位置移至下一行的行首。

因为此方法会继续在输入信息中查找行分隔符,所以如果没有行分隔符,它可能会缓冲所有输入信息,并查找要跳过的行。


返回:
跳过的行

,System,

public static long nanoTime()
返回最准确的可用系统计时器的当前值,以毫微秒为单位。

此方法只能用于测量已过的时间,与系统或钟表时间的其他任何时间概念无关。返回值表示从某一固定但任意的时间算起的毫微秒数(或许从以后算起,所以该值可能为负)。此方法提供毫微秒的精度,但不是必要的毫微秒的准确度。它对于值的更改频率没有作出保证。在取值范围大于约 292 年(263 毫微秒)的连续调用的不同点在于:由于数字溢出,将无法准确计算已过的时间。

例如,测试某些代码执行的时间长度:

   long startTime = System.nanoTime();
   // ... the code being measured ...
   long estimatedTime = System.nanoTime() - startTime;
 
返回:
系统计时器的当前值,以毫微秒为单位。
public static void exit(int status)
终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。

该方法调用 Runtime 类中的 exit 方法。该方法永远不会正常返回。

调用 System.exit(n) 实际上等效于调用:

 Runtime.getRuntime().exit(n)
 
参数:
status - 退出状态。

gc

public static void gc()
运行垃圾回收器。

调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存。当控制权从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间。

调用 System.gc() 实际上等效于调用:

 Runtime.getRuntime().gc()
public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从 src 引用的源数组到 dest 引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于 length 参数。源数组中位置在 srcPossrcPos+length-1 之间的组件被分别复制到目标数组中的 destPosdestPos+length-1 位置。

                     ----------------------android培训java培训、期待与您交流! ----------------------


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值