Java常用类之Math类
Java提供Math工具类(java.lang.Math)专用于数学运算,该类有很多静态方法,能完成指数运算、对数运算、平方根运算和三角运算等,还有两个静态常量:E(自然对数)和PI(圆周率)。Math类是final型,不能派生子类。另外,它的构造方法是private类型,因此该类也不能被实例化。Math类的方法较多,这里仅列出部分常用的,如表5.3所示。
方 法 | 描 述 |
abs() | 返回绝对值 |
floor(double d) | 返回最大的double值,该值小于等于参数,并等于某个整数 |
pow(double a,double b) | 返回第一个参数的第二个参数次幂的值 |
random() | 返回带正号的double值,该值大于等于0.0且小于1.0 |
round(float a) | 返回最接近参数的int |
round(double a) | 返回最接近参数的long |
min(a,b) | 返回两者中较小的一个 |
max(a,b) | 返回两者中较大的一个 |
例题:输入三角形的三边长,求此三角形面积。
将args的参数设置为 6 8 10、
运行结果如下:
源代码部分:
TestMath.java
public class TestMath {
public static void main(String[] args) {
int a = 0;
int b = 0;
int c = 0;
a = Integer.parseInt(args[0]);
b = Integer.parseInt(args[1]);
c = Integer.parseInt(args[2]);
double area =0;
double s = 0.0;
s = 1.0/2*(a+b+c);
area = Math.sqrt(s*(s-a)*(s-b)*(s-c));
System.out.println("三角形的面积是"+area);
}
}
Java常用类之Random类
java.util.Random类用于生成伪随机数,它有两个构造器:一个使用默认的种子(当前时间),每次运行生成结果是随机的;另一个需要程序员显式传入一个long型整数的种子,对于同一个种子每次运行生成的结果都一样。表5.4列出Random类的常用方法。
方 法 | 描 述 |
nextInt() | 返回下一个int类型的伪随机数,其值在Integer.MIN_VALUE~Integer.MAX_VALUE(不含)之间 |
nextInt(int n) | 返回下一个int类型的伪随机数,伪随机数的值大于或等于0并且小于参数n |
nextLong() | 返回下一个long类型的伪随机数,值在Long.MIN_VALUE~Long.MAX_VALUE之间 |
nextDouble() | 返回下一个double类型的伪随机数,伪随机数的值大于或等于0,并且小于1.0 |
nextBoolean() | 返回下一个boolean类型的伪随机数,伪随机数的值为true或false |
例题:使用Random类生成随机数。
运行结果:
源码部分
TestRandom.java
import java.util.Random;
public class TestRandom {
public static void main(String[] args) {
Random r1 = new Random();
Random r2 = new Random(100);
Random r3 = new Random(100);
System.out.println(r1.nextInt()); // 产生任意大小的随机整数
System.out.println(r1.nextBoolean());
System.out.println(r1.nextDouble());
System.out.println(r1.nextFloat());
System.out.println(r1.nextLong());
System.out.println(r1.nextInt(100)); // 产生0至100的随机整数
System.out.println(r2.nextInt());
System.out.println(r3.nextInt());
}
}
Java常用类之日期时间类
例题:使用新日期时间包获取当前系统时间,并以各种格式加以显示。
运行结果:
源代码部分:
UseLocalDateTime.java
import java.time.*;
import java.time.format.*;
class UseLocalDateTime {
public static void main(String[] args) {
LocalDate curDate = LocalDate.now();
System.out.println(curDate);
LocalTime curTime = LocalTime.now();
System.out.println(curTime);
LocalDateTime curDateTime = LocalDateTime.now();
System.out.println(curDateTime);
System.out.println(curDateTime.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT, FormatStyle.SHORT)));
System.out.println(curDateTime.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM, FormatStyle.MEDIUM)));
System.out.println(curDate.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)));
System.out.println(curDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd-EEEE-hh-mm-ss")));
System.out.println(curDateTime.format(DateTimeFormatter.ofPattern("yyyy/MM/dd/EEEE/hh/mm/ss")));
LocalDate myDate = LocalDate.parse("10-25-2020", DateTimeFormatter.ofPattern("MM-dd-yyyy"));
System.out.println(myDate);
LocalDateTime myDateTime = LocalDateTime.parse("2020-10-25T07:35:27", DateTimeFormatter.ISO_LOCAL_DATE_TIME);
System.out.println(myDateTime);
}
}
Java常用类之日历应用
现在Java提供了更好的解决方案,LocalDate封装了由ISO 8601指定的Gregorian(格里高利历,即公历)日历,能实现与Calendar同样的功能,且更简单。
例题:打印10个既是星期一又是11号的日期。
运行结果:
源代码部分:
LocalCalendarDate.java
import java.time.*;
import java.time.format.*;
public class LocalCalendarDate {
public static void main(String[] args) {
//***********设定日期和时间格式**********************
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);
LocalDate calDate = LocalDate.now();
System.out.println("System Date: " + calDate.format(formatter));
int interval = calDate.getDayOfWeek().getValue() - 1;
calDate = calDate.minusDays(interval);
System.out.println("After Setting Day of Week to Friday: " + calDate.format(formatter));
int monday11Count = 0;
while(monday11Count < 10) {
calDate = calDate.plusDays(7); //增加7天得到下一个星期一
//************判断星期一的那是否是11号**************
if(calDate.getDayOfMonth() == 11) {
monday11Count++;
System.out.println(calDate.format(formatter));
}
}
}
}