java数学运算和日期类

Math

Math类是java提供给我们的用于数学运算的工具

静态常量

Math类中包含E和PI两个静态常量,E表示自然对数,PI表示圆周率 ```java

System.out.println(Math.E);
    System.out.println(Math.PI);

```

数学方法

abs(number) 绝对值
max(x,y) 最大值
min(x,y) 最小值
ceil(num) 返回大于或者等于num的最小整数
floor(num) 返回小于或等于num的最大整数
rint(num) 返回最接近a的整数
round(num) 将num+0.5之后返回最近的整数
sin(num) 返回角的三角正弦值 
cos()    返回角的三角余弦值
asin()  返回一个值的反正弦值,参数域在[-1,1],值域在[-PI/2,PI/2]
acos() 返回一个值的反余弦值参数域在[-1,1]值域在[0.0,PI]
tan() 返回角的三角正切值
atan 返回一个值的反正切值 值域在[-PI/2,PI/2];
toDegrees() 一个角的弧度值
to Radians()
exp() 返回e的a次幂
pow(a,b) 返回以a为底数,以b为指数的幂值
sqrt(num) 返回num的平方根
cbrt(num) 返回num的立方根
log() 返回a的自然对数
log10() 返回以10为底的a的对数

java /* System.out.println("请输入需要求的绝对值"); Scanner input=new Scanner(System.in); double num=Integer.parseInt(input.next()); System.out.println("绝对值为:"+Math.abs(num)); System.out.println("请输入需要比较的数组"); Scanner input_max=new Scanner(System.in); Scanner input_min=new Scanner(System.in); double num_1=Integer.parseInt(input_max.next()); double num_2=Integer.parseInt(input_min.next()); System.out.println("最大值为:"+Math.max(num_1,num_2)); System.out.println("最小值为:"+Math.min(num_1,num_2));*/ /*最接近的数*/ /* System.out.println("请输入需要查看的数字"); Scanner input=new Scanner(System.in); float num=Float.valueOf(input.next()).floatValue(); System.out.println("大于或等于"+num+"的整数为"+Math.ceil(num)); System.out.println("小于或者等于"+num+"的整数为"+Math.floor(num)); System.out.println("最接近"+num+"的整数为"+Math.rint(num)); System.out.println("+0.5之后最接近的整数为"+Math.round(num));*/ /*三角函数*/ /* System.out.println("请输入需要求三角函数的角"); Scanner input=new Scanner(System.in); float num=Float.valueOf(input.next()).floatValue(); System.out.println(num+"的正弦值为"+Math.sin(num)); System.out.println(num+"的余弦值为"+Math.cos(num)); System.out.println(num+"的正切值为"+Math.tan(num)); System.out.println(num+"的反正弦值为"+Math.asin(num)); System.out.println(num+"的反余弦值为"+Math.acos(num)); System.out.println(num+"的反正切值为"+Math.atan(num)); System.out.println(num+"的弧度值为"+Math.toDegrees(num));*/ /*指数*/ /* System.out.println("请输入需要求指数的数字"); Scanner input=new Scanner(System.in); int num=Integer.parseInt(input.next()); System.out.println(num+"a次幂"+Math.exp(num)); System.out.println(num+"以10为指数"+Math.pow(num,10)); System.out.println(num+"平方根"+Math.sqrt(num)); System.out.println(num+"立方根"+Math.cbrt(num)); System.out.println(num+"的自然对数"+Math.log(num)); System.out.println(num+"以10为底的对数"+Math.log10(num));*/

随机数

java里生成随机数有两种方法一种是通过Math类的random方法一种是通过Random类 random方法只能产生boolean类型的0-1的随机数,Random类能生成很多随机数 Random类的方法 java import java.util.Random r =new Random(); r.nextBoolean() //生成随机的boolean值 r.nextDouble() * 7//生成随机的double值 数值区间如果写* x 则区间为0,x.0 r.nextInt(16) -1 //生成0,15区间的整数随机数 r.nextLong() //生成随机长整形数字 r.nextFloat() //随机浮点数

数字格式化

通过DecimalFormat类进行对数字格式化,在实例化DecimalFormat的时候需要先使用特定的符号进行指定格式 ```java import java.text.DecimalFormat 0 // 显示数字,如果位数不够则补=0

// 显示数字,位数不够没有变化

. //小数分割符 - //减号 , //组分隔符 E //分割科学计数法中的尾数和小数 % //前缀或者后缀,乘以100显示百分比 ? //乘1000后作为千进制货币符号显示 System.out.println("请输入小数"); Scanner input=new Scanner(System.in); float num=input.nextFloat(); DecimalFormat dfnum1=new DecimalFormat("0.0"); DecimalFormat dfnum2=new DecimalFormat("#.#"); DecimalFormat dfnum3=new DecimalFormat("0.0000"); System.out.println(dfnum1.format(num)); System.out.println(dfnum2.format(num)); System.out.println(dfnum3.format(num)); ```

大数字运算

java里提供了BigDecimal类和BigInteger用于大数字的运算,如果要存储比Integer类型大的数字就需要用到BigInteger类

### BigInteger类

add 加法
subtract 减法
multiply 乘法
divide 除法
remainder 取余
divideAndRemainder 除法返回数组第一个为商,第二个为余数
pow(num) 做num的次方运算
negate 取相反数
shiftLeft(n) 将数字左移n位 n为负数则右移
shiftRight 参考shiftLeft
and 与运算
or 或运算
compareTo 做数字的比较运算
equals(num) num是BigInteger类型时,相等返回true
min 最小值
max 最大值

java System.out.println("请输入一个整数"); Scanner input=new Scanner(System.in); BigInteger bigInt_num=new BigInteger(input.next()); System.out.println("add"+bigInt_num.add(new BigInteger("10"))); System.out.println("subtract"+bigInt_num.subtract(new BigInteger("10"))); System.out.println("multiply"+bigInt_num.multiply(new BigInteger("6"))); System.out.println("divide"+bigInt_num.divide(new BigInteger("2"))); System.out.println("divideAndRemainder"+bigInt_num.divideAndRemainder(new BigInteger("3"))[0]+"余数"+bigInt_num.divideAndRemainder(new BigInteger("3"))[1]); System.out.println("pow"+bigInt_num.pow(2)); System.out.println("negate"+bigInt_num.negate()); System.out.println("shiftLeft"+bigInt_num.shiftLeft(3)); System.out.println("ShiftRight"+bigInt_num.shiftRight(4)); System.out.println(" equals"+bigInt_num.equals(bigInt_num)); System.out.println("and"+bigInt_num.and(bigInt_num)); System.out.println("or"+bigInt_num.or(bigInt_num)); System.out.println("cometo"+bigInt_num.compareTo(bigInt_num));

BigDecimal类

BigInteger和BigDecimal都是用户大数字的运算,但是BigDecimal能够进行小鼠的运算

add 加法
substract 减法
multiplieand 乘法
divide 除法

 divide方法接受三个参数(除数,小数点后几位,近似值处理模式)
   近似值处理模式
    ROUND_UP 最后一位大于0则向前进位
    ROUND_DOWN 最后一位无论是什么都省略
    ROUND_Ceiling 商如果是正数,按照ROUND_UP模式处理,负数按照ROUND_DOWN处理
    ROUND_FLOOR 与ROUND_CEILING相反
    ROUND_HALF_DOWN 进行五舍六入操作
    ROUND_HELF_UP  进行四舍五入操作
    ROUND_HALF_EVEN 倒数第二位是奇数按照ROUND_UP处理,是偶数按照ROUND_DOWN处理

```java System.out.println("请输入要做运算的浮点数"); Scanner input=new Scanner(System.in); Scanner input2 =new Scanner(System.in); double num=input.nextDouble(); double num2=input2.nextDouble(); BigDecimal bigDe=new BigDecimal(num); BigDecimal bigDe2=new BigDecimal(num2); System.out.println("add"+bigDe.add(bigDe2)); System.out.println("subtract"+bigDe.subtract(bigDe2)); System.out.println("multiply"+bigDe.multiply(bigDe2)); System.out.println("ROUNUP"+bigDe.divide(bigDe2,2,BigDecimal.ROUNDUP));

```

日期

java里有Date类和Calendar类用来表示时间 Date类用于时间戳 (参考js里的Date) Calendar类用来根据系统日历来解释Date对象

Date

```java new Date() //获取当前的时间 new Date() //表示从1970年1月1日0点0分0秒经过的num毫秒的时间 after(Date) //判断此日期是否在指定日期之后 before(Date) //判断此日期是否在指定日期之前 compareTo(Date) // 比较两个日期的顺序 getTime() //获取当前日期从1970年到现在的毫秒数 toString() //将date类型转换为字符串 equals() //比较两个日期的相等性

//实例 日期转换这里如果是较大的毫秒数需要使用BigInteger和int类型进行互相转换

Date dateNow=new Date(); BigInteger dateNowm=new BigInteger(dateNow.getTime()+""); BigInteger TuwenYears=new BigInteger("31104000000"); BigInteger willtimes= dateNowm.add(TuwenYears); Date dateWill=new Date(willtimes.longValue()); // 输出当前时间 System.out.println(dateNow.toString()); //输出未来时间 System.out.println(dateWill.toString()); //after System.out.println(dateNow.after(dateWill)); //before System.out.println(dateNow.before(dateWill)); //equals System.out.println(dateNow.equals(dateWill)); //compareTo System.out.println(dateNow.compareTo(date_Will)); ```

Calendar类

Calendar是一个抽象类,它提供给了我们获取当前年月日的一些转换方法,因为是一个抽象类,所以不能直接new 但是可以通过getInstance方法获取到Calendar对象

Calendar对象里的方法

   add(field,amount) 根据日历的规则给field字段添加或者减去amount
   after(calendar) 判断此calendar是否在指定时间之后
   before() 与after相反
   clear() 清楚calendar中的时间值
   comPareTo() 比较两个calendar
   get() 返回指定日历字段的值
   getActualMaximum() 返回指定日历字段可能拥有的最大值
   getActualMinmum() 返回指定日历字段可能拥有的最小值
   getFirstDayOfWeek() 获取一星期的第一天
   getInstance 使用默认时区和默认语言环境获得一个日历
   getTime()返回毫秒
   set 为指定的日历字段设置给定值
   set(year,month,date) 设置日历字段
   setFirstDayOfWeek() 设置一星期的第一天是哪一天
   setTimeInMillis(long) 用给定的long值设置此Calendar的当前时间值

   常量
    YEAR 年
    MONTH 月
    DATE 日期
    DAY_OF_MONTH 日期
    HOUR 12小时制的小时
    HOUR_OF_DAY 24小时制的小时
    MINUTE 分钟
    SECOND 秒
    DAY_OF_WEEK 星期几

java //方法和常量用法 Calendar c=Calendar.getInstance(); //将系统时间赋值过去 c.setTime(new Date()); System.out.println("当前时间"+c.getTime()); int year=c.get(Calendar.YEAR); System.out.println("今年是"+year+"年"); int month =c.get(Calendar.MONTH)+1; System.out.println("这个月是"+month+"月"); c.set(2019, 12, 1); System.out.println("设置日期为 2019-12-1 后的时间:" + c.getTime());

日期格式化

日期格式化可以通过DateFormat类和SimpleateFormat类 ### DateFormat DateFormat也是抽象类不能直接new,需要使用DateFormat.getDateInstance来获取DateFormat对象 format(date) 将Date格式化日期、时间字符串 getCalendar() 获得与此日期、时间格式相关联的日历 getDateInstance(风格,指定语言环境的日期,时间格式) 有三个参数,参数不同则对应不同的方法(多态) getTimeInstance(风格,指定语言环境的时间格式) setCalendar(Calendar) 为此模式设置日历 Parse() 将给定的字符串解析为日期

格式化样式常量 SHORT 完全为数字 MEDIUM 较长 LONG 更长 FULL 完全指定 ```java DateFormat df=DateFormat.getInstance(); DateFormat df1=df.getDateInstance(DateFormat.SHORT, Locale.CHINA); String date1=df1.format(new Date()); System.out.println(date1);

```

SimpleDateFormat

SimpleDateFormat(格式,语言环境) 实例化SimpleDateFormat的时候参数可不传,可传一个或者两个 SimpleDateFormat的格式 y 年份 yyyy=2022 M 月份 MM=10 d 天 dd20 E 周几
H (24)小时 HH =11 h (12)hh hh=12 m 分钟数 mm=56 s 秒数 ss=12 S 毫秒 java Date now=new Date(); SimpleDateFormat f=new SimpleDateFormat("现在是"+"yyyy年MM月dd日HH时mm分ss秒E"); System.out.println(f.format(now));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值