本文目录一览:
new Random()就是一个随即数对象,然后nextInt为获取当前随机数对象的随即产生的一个整数,%100就是用这个整数对100求模,获得其余(该余在-99 至 99之间),Math.abs为取绝对值,再加1,则获得[1, 100]之间的整数,包括1,100
你好,我们在安装JDK的时候,会自动将源码的zip放入你的安装目录下,你可以到安装目录下找到
src.zip然后解压缩,就得到所有的源码,然后你到java-lang下面就可以找到Math.java文件,然后打开就是Math的源码。
1.StringBuffer为什么要new?
答:java是面向对象语言,简单的来说,就是化执行者为指挥者。而类的对象就是通过new关键字来创建对象的,再通过对象来引用成员变量和成员 *** ,这个深层的原因:和java在编译期对new转化的虚拟机指令有关系。这个不多说。
2.Math类为什么不需要new?
答:Math是JDK提供的一个工具类,1.6版本的申明源码如下:
public final class Math {
/**
* Don't let anyone instantiate this class.
*/
private Math() {}
如上面源码所示, 构造器私有化,所以无法创建对象,这就好比你使用单例模式,就需要私有化构造器来防止其他的人创建对象。再看 *** :
public static int abs(int a) {
return (a 0) ? -a : a;
}
源码中的 *** 都是静态 *** ,所以,这部分静态的 *** 在类加载的时候已经在 *** 区中申明出来了,不回参与你的对象实例化的过程,和对象创建没有关系。所以,静态的 *** 都是通过类型直接引用的,和你创不创建对象没有关系。这就是我为什么在上面写成员 *** ,为了和这里的静态 *** 区分开。
java.lang.Math.max(参数1,参数2)是一个静态的工具 *** ,主要用来比较两个相同类型参数的大小,支持的类型有double,float,int,long四种类型。
举例:public static double max(double a,double b),返回两个 double 值中较大的一个。也就是说,结果为更接近正无穷大的参数。如果参数值相同,那么结果也是同一个值。如果任一值为 NaN,那么结果为 NaN。与数值比较运算不同,该 *** 认为负 0 严格小于正 0。如果一个参数为正 0,另一个参数为负 0,那么结果为正 0。
import java.lang.Math;
public class MaxDemo {
public static void main(String[] args) {
double x = 24.12;
double y = 32.11;
// print the larger number between x and y
System.out.println("Math.max(" + x + "," + y + ")=" + Math.max(x, y));
}
}
输出结果为Math.max(24.12, 32.11)=32.11
Math类属于java.lang包中的函数,所以在使用的过程中,不需要导入这个库,可以直接使用的。
package test;
public class promble02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
double pi = Math.PI;
System.out.println(pi);
}
}