Math类的概述和使用
-概述:Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数
-成员方法:
* public static int abs(int a) //返回a的绝对值
* public static double ceil(double a) //向上取整,返回一个大于a的最小double值 ceil - 天花板
* public static double floor(double a) //向下取整,返回一个小于a的最大double值 floor - 地板
* public static int max(int a,int b) min自学 //返回a,b中的较大的那个数
* public static double pow(double a,double b) //返回a的b次幂
* public static double random() //返回带正号的double值,该值在0.0-1.0之间,且不为0或1
* public static int round(float a) //返回最接近a的int数
* public static double sqrt(double a) //返回正确舍入的a的正平方根
57.Random类的概述和使用
-概述:此类用于产生随机数如果用相同的种子创建两个 Random 实例
-构造方法:
* public Random()
* public Random(long seed) //使用单个long种子创建新的随机数生成器
-成员方法:
* public int nextInt() // 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int
值
* public int nextInt(int n) //返回一个伪随机数,它是取自此随机数生成器序列的在 0(包括)和指定值(不包括)之间均匀分布的 int
值
58.System类的概述和使用
-概述:System 类包含一些有用的类字段和方法它,不能被实例化(构造方法私有)
-成员方法:
* public static void gc() //运行垃圾回收器
* public static void exit(int status) //终止当前正在运行的java虚拟机
* public static long currentTimeMillis() //返回以毫秒为单位当前时间(当前时间与协调世界时1970年1月1日午夜之间的时间差)
* pubiic static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) //从指定原数组复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束
59.BigInteger类的概述和使用
-概述:可以让超过Integer范围内的数据进行运算
-构造方法:* public BigInteger(String val) //将字符串转换为BigInteger类
-成员方法:
* public BigInteger add(BigInteger val) //+
* public BigInteger subtract(BigInteger val) //-
* public BigInteger multiply(BigInteger val) //*
* public BigInteger divide(BigInteger val) //除
* public BigInteger[] divideAndRemainder(BigInteger val) //返回包含 (this / val)后跟(this % val)的两个BigInteger的数组
package javademo;
import java.math.BigInteger;
public class demo7 {
public static void main(String[] args) {
BigInteger b1 = new BigInteger("100");
BigInteger b2 = new BigInteger("2");
System.out.println("和:"+b1.add(b2));
System.out.println("差:"+b1.subtract(b2));
System.out.println("积:"+b1.multiply(b2));
System.out.println("商:"+b1.divide(b2));
BigInteger[] b3 = b1.divideAndRemainder(b2); //返回b1/b2的值和b1%b2的余数
for (int i = 0; i < b3.length; i++) {
System.out.println(b3[i]);
}
}
}
60.BigDecimal类的概述和使用
-概述:由于在运算的时,float类型和double很容易丢失精度,所以,为了能精确的表示计算浮点数,Java提供了BigDecimal,传入不可变的任意进度的有符号十进制数
-构造方法:* public BigDecimal(String val)
-成员方法:
* public BigDecimal add(BigDecimal augend)
* public BigDecimal subtract(BigDecimal subtrahend)
* public BigDecimal multiply(BigDecimal multiplicand)
* public BigDecimal divide(BigDecimal divisor)
package javademo;
import java.math.BigDecimal;
public class demo8 {
public static void main(String[] args) {
System.out.println(2.0-1.1); //精度丢失
BigDecimal b1 = new BigDecimal(2.0);
BigDecimal b2 = new BigDecimal(1.1);
System.out.println(b1.subtract(b2)); //精度丢失
BigDecimal b3 = new BigDecimal("2.0"); //将想要处理的小数转换为字符串
BigDecimal b4 = new BigDecimal("1.1");
System.out.println(b3.subtract(b4));
BigDecimal b5 = BigDecimal.valueOf(2.0);
BigDecimal b6 = BigDecimal.valueOf(1.1);
System.out.println(b5.subtract(b6));
}
}
61.Data类的概述和方法使用
-概述:类 Date 表示特定的瞬间,精确到毫秒
-构造方法:
* public Date() //分配Date对象并初始化此对象,以分配它的时间(精确到毫秒)
* public Date(long date)
-成员方法:
* public long getTime() //返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒
* public void setTime(long time) //设置此 Date
对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time
毫秒的时间点
62.simpleDateFormat类的概述和方法使用
-DateFormat类的概述: DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。是抽象类,所以使用其子类SimpleDateFormat,抽象类无法被实例化
-概述:SimpleDateFormat
是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化
-日期和时间模式:
日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 'A'
到 'Z'
和 'a'
到 'z'
被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 ('
) 引起来,以免进行解释。"''"
表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。
定义了以下模式字母(所有其他字符 'A'
到 'Z'
和 'a'
到 'z'
都被保留)
字母 日期或时间元素 表示 示例 G
Era 标志符 Text AD
y
年 Year 1996
;96
M
年中的月份 Month July
;Jul
;07
w
年中的周数 Number 27
W
月份中的周数 Number 2
D
年中的天数 Number 189
d
月份中的天数 Number 10
F
月份中的星期 Number 2
E
星期中的天数 Text Tuesday
;Tue
a
Am/pm 标记 Text PM
H
一天中的小时数(0-23) Number 0
k
一天中的小时数(1-24) Number 24
K
am/pm 中的小时数(0-11) Number 0
h
am/pm 中的小时数(1-12) Number 12
m
小时中的分钟数 Number 30
s
分钟中的秒数 Number 55
S
毫秒数 Number 978
z
时区 General time zone Pacific Standard Time
;PST
;GMT-08:00
Z
时区 RFC 822 time zone -0800
以下是美国语言环境解释日期和时间模式:
日期和时间模式 结果 "yyyy.MM.dd G 'at' HH:mm:ss z"
2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy"
Wed, Jul 4, '01
"h:mm a"
12:08 PM
"hh 'o''clock' a, zzzz"
12 o'clock PM, Pacific Daylight Time
"K:mm a, z"
0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa"
02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z"
Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ"
010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
2001-07-04T12:08:56.235-0700
-构造方法:
* public SimpleDateFormat()
* public SimpleDateFormat(String pattern) //用给定的模式构造simpleDateFormat对象
-成员方法:
* public final String format(Date date) //将给定的date格式化为日期/时间字符串
* public Date parse(String source) //解析字符串中的文本,生成date
package javademo;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class demo9 {
public static void main(String[] args) throws ParseException {
Date d = new Date(); //获取当前时间对象
System.out.println(d); //输出当前日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); //创建日期格式化类对象
System.out.println(sdf.format(d)); //将日期对象转化为字符串
String date = "2008/12/12 08:08:20"; //设置字符串,字符串内容要符合规定
Date d1 = sdf.parse(date); //将字符串转换为date对象,需要抛出异常
System.out.println(d1); //输出Date对象d1
}
}
63.Calendar类的概述和方法使用
-概述:Calendar是一个抽象类,它为特定瞬间与一组诸如YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
等日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法
-成员方法:
* public static Calendar getInstance() //使用默认时区和语言环境获得一个日历
* public int get(int field) //返回给定日历字段的值
* public void add(int field,int amount) //对指定的字段执行+或-操作
* public final void set(int year,int month,int date) //修改指定字段
package javademo;
import java.io.ObjectInputStream.GetField;
import java.util.Calendar;
public class demo_Calendar {
public static void main(String[] args) {
Calendar c = Calendar.getInstance(); //父类引用指向子类对象
System.out.println(c.get(Calendar.YEAR)); //通过字段获得年
System.out.println(c.get(Calendar.MONTH)); //通过字段获得月,但是月是从0开始编号的
System.out.println(c.get(Calendar.DAY_OF_MONTH)); //月中的第几天
System.out.println(c.get(Calendar.DAY_OF_WEEK)); //每周的第几天,周日是第一天,周六是最后一天
System.out.println("----------------");
c.add(Calendar.YEAR, 1); //对指定的字段执行+或-操作
System.out.println(c.get(Calendar.YEAR));
System.out.println("----------------");
c.set(Calendar.YEAR, 1998); //修改指定字段
System.out.println(c.get(Calendar.YEAR));
}
}
-案例:输入一个年份判断是否是闰年
package test;
import java.util.Calendar;
import java.util.Scanner;
public class demo17 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
Calendar c = Calendar.getInstance();
c.set( year,2,1);
c.add(Calendar.DAY_OF_MONTH, -1);
if(c.get(Calendar.DAY_OF_MONTH) == 29){
System.out.println("闰年");
}else{
System.out.println("false");
}
}
/*
* 1.输入年Scanner
* 2.创建Calendar对象
* 3.通过set方法将输入的年设置为那一年的3月1日
* 4.将日向前减一位
* 5.若日为28,返回true,否则false
* */
}