1. math
package com.qf.demo02;
public class Test2Math {
public static void main(String[] args) {
System.out.println(Math.PI);//圆周率,3.141592653589793
System.out.println(Math.abs(100));//绝对值
System.out.println(Math.abs(-100));
//向上取整
System.out.println(Math.ceil(3.00001));//返回大于或等于参数的最小(最接近负无穷大) double值,等于一个数学整数。
//向下取整
System.out.println(Math.floor(4.1));
//四舍五入
System.out.println(Math.round(3.49));
double num = 3.4;
System.out.println(Math.floor(num + 0.5));//效果是四舍五入吗?
System.out.println(Math.pow(2, 3));//a的b次方
System.out.println(Math.pow(3, 2));
System.out.println(Math.sqrt(9));//根号9-->3
System.out.println(Math.sqrt(8));//根号8-->2倍根号2
//System.out.println(Math.random());//随机数,取值范围:[0,1),随机小数
//偷偷的看了一下Math.random()的源代码,发现就是new Random对象,调用nextDouble()方法。
/*
* 需求:int
*
*
* [0,1) * 100
* --->[0,100) [0,99.999999999]
* 直接取整数部分:(int)-->[0,99]
*
*
* 取[0,100]的随机数
* -->取[0,100.9889988)
* -->[0,1)*101-->[0,101)
* 100.99999999999
* -->(int)-->[0,100]
*
*
* 取[0,10]的随机数
* -->取[0,10.999999]
* -->[0,1)*11 -->[0,11)
* 10.9999999
* -->(int)-->[0,10]
*
* 取[5,15]的随机数
* --->[0,10]+5--->[5,15]
* --->[0,1)*11--->[0,11)
* 10.9999999
* --->(int)--->[0,10]
*
* 取[3,14]的随机数
* --->[0,11]+3
* --->[0,1)*12 --->[0,12)
* 11.999999
* --->(int)-->[0,11]
*
* 取[m,n]之间的随机整数
* -->[0,n-m] + m
*
* (int)(Math.random()*(n-m+1)+m);//获取[m,n]之间的随机整数的公式
*/
double d1 = Math.random();//[0,1)
double d2 = d1 * 100;//乘以100后的取值范围?[0,100)
int i1 = (int)d2;//[0,99]
int i2 = i1 + 3;//[3,102]
System.out.println((int)(Math.random()*100+3));
System.out.println((int)(Math.random()*101));//[0,100]
System.out.println((int)(Math.random()*11));//[0,10]
System.out.println((int)(Math.random()*11+5));
System.out.println((int)(Math.random()*12+3));
}
}
2. random
package com.qf.demo02;
import java.util.Random;
public class Test3Random {
public static void main(String[] args) {
//step1:创建Random类的对象
Random r1 = new Random();
//step2:通过r1调用方法,就能够生成各种各样的随机数
boolean b1 = r1.nextBoolean();//产生一个boolean类型的随机数
System.out.println(b1);
double d1 = r1.nextDouble();//产生一个随机double类型,取值范围:[0,1)
System.out.println(d1);
int i1 = r1.nextInt();//产生一个int类型的随机数
System.out.println(i1);
int i2 = r1.nextInt(3);//产生一个int类型的随机数:[0,3)
System.out.println(i2);
Random r2 = new Random(10);
Random r3 = new Random(10);
System.out.println("-->"+r2.nextInt());
System.out.println("-->"+r3.nextInt());
}
}
3. BigDecimal
package com.qf.demo02;
import java.math.BigDecimal;
public class Test4BigDecimal {
public static void main(String[] args) {
double d1 = 0.05;
double d2 = 0.01;
System.out.println(d1+d2);
System.out.println(1.0-0.9);
System.out.println(0.1+0.2);
System.out.println(1.5+0.3);
System.out.println("------------------");
//BigDecimal,构造BigDecimal对象时候,如果直接使用double类型作为参数,存在精度
//BigDecimal bd1 =new BigDecimal(0.05); //0.05000000000000000277555756156289135105907917022705078125
//BigDecimal bd2 = new BigDecimal(0.01); //0.01000000000000000020816681711721685132943093776702880859375
//System.out.println(bd1);//重写了toString(),显示存储的数值
//System.out.println(bd2);
BigDecimal bd3 = new BigDecimal("0.05");
BigDecimal bd4 = new BigDecimal("0.01");
System.out.println(bd3);
System.out.println(bd4);
//加法
BigDecimal res1 = bd3.add(bd4);//d1+d2--->d1.add(d2)
System.out.println(res1);
//减法
BigDecimal res2 = bd3.subtract(bd4);
System.out.println(res2);
//乘法
BigDecimal res3 = bd3.multiply(bd4);
System.out.println(res3);
BigDecimal bd5 = new BigDecimal("10");
BigDecimal bd6 = new BigDecimal("3");
//除不尽的情况,必须明确2个信息:(小数点后保留几位,是否使用四舍五入)
//BigDecimal res4 = bd5.divide(bd6);
BigDecimal res5 = bd5.divide(bd6, 2, BigDecimal.ROUND_HALF_UP);
System.out.println(res5);
}
}
4. date
package com.qf.demo01;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test2SimpleDateFormat {
public static void main(String[] args) throws ParseException {
Date date = new Date();
System.out.println(date);//Thu Apr 16 11:00:36 IRKT 2020
/*
* "2020-04-16"-->"yyyy-MM-dd"
* 2020/04/16 --> "yyyy/MM/dd"
* 2020年04月16日:"yyyy年MM月dd日"
* 2020-04-16 11:01:33-->"yyyy-MM-dd HH:mm:ss"
* ....
*/
/*
* SimpleDateFormat类:
* Date-->String:日期格式化?就是将一个日期Date对象,按照指定的字符串格式去显示。
* format(),根据模板,将date日期,转为String字符串类型
* 1.创建SimpleDateFormat对象。可以通过构造方法指定模板(格式):"yyyy-MM-dd"
* 如果没有指定模板,使用系统默认:20-4-16 上午11:09
* 2.sdf.format(date)-->String
*
*
* String-->Date:解析?就是将一个文本字符串,解析成一个Date对象。
* parse(),根据模板,将字符串解析为对应的日期对象,异常。
* 1.同上
* 2.sdf.parse(String)-->date
*/
//step1:创建格式化对象:
SimpleDateFormat sdf = new SimpleDateFormat();//默认格式:yy-M-dd
//step2:调用format方法,将date--->String
String s1 = sdf.format(date);
System.out.println(s1);//20-4-16 上午11:09
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss.SSS");
String s2 = sdf2.format(date);
System.out.println(s2);//2020年04月16日 11:22:01.640
//String类型的表示日期的数据--->Date对象
String src = "2020-05-22";
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");
Date date2 = sdf3.parse(src);//会按照sdf对应的模板来进行格式化
System.out.println(date2);
}
}
package com.qf.demo01;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Test3Calendar {
public static void main(String[] args) {
//step1:创建Calendar类的对象
Calendar calendar = new GregorianCalendar();
//step2:获取所需要的数据
/*
* 语法:calendar.get(XXX);
* year-->年
* month-->月,+1
* dayofmonth-->日期
* hourofday-->小时
* ....
*/
System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
System.out.println("MONTH: " + (calendar.get(Calendar.MONTH)+1));
System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
//System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));//0上午am,1下午pm
//System.out.println("HOUR: " + calendar.get(Calendar.HOUR));//12小时制。
System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));//24小时制
System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
/*
* 通过Calendar类,可以直接获取年,月,日,时,分,秒。。。。
* Date类:
* 思考题:通过Calendar类的对象,获取当前的年月日时分秒:拼接成一个字符串:
* 2020年04月16日 11:52:33
*/
String date = calendar.get(Calendar.YEAR)+"年"+(calendar.get(Calendar.MONTH)+1)+"月"+calendar.get(Calendar.DAY_OF_MONTH)+"日";
String time = calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND);
System.out.println(date);
System.out.println(time);
}
}
来源:https://www.cnblogs.com/yzg-14/p/13377961.html