JavaSE基础六----<一常用类(3)一>【Math类Random类|System类,Date类Calendar类SimpleDateFormat类,BigInteger类BigDecimal类】
2021/5/3 1:25:26
本文主要是介绍JavaSE基础六----<一常用类(3)一>【Math类Random类|System类,Date类Calendar类SimpleDateFormat类,BigInteger类BigDecimal类】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 1.Math类
- 2.Random类
- 3.System类
- 4.Date类/Calendar类/ SimpleDateFormat类
- Date类
- Calendar类
- SimpleDateFormat类
- 5.BigInteger类
- 6.BigDecimal类
1.Math类
java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。
部分方法
- abs( ) 返回绝对值
- PI 返回π值
- sqrt( ) 平方根
- pow(double a, double b) a的b次幂
- ceil( ) 向上取整
- floor( ) 向下取整
- max(int a,int b) 返回最大值
- random( ) 返回 0.0 到 1.0 的随机数
- long round(double a) double型的数据a转换为long型(四舍五入)
//Math类 public class Demo001 { public static void main(String[] args) { // abs() 返回绝对值 System.out.println(Math.abs(-56));//56 //PI 返回π值 System.out.println(Math.PI);//3.141592653589793 // sqrt() 平方根 System.out.println(Math.sqrt(9.0));//3.0 // pow(double a, double b) a的b次幂 System.out.println(Math.pow(3,2));//9.0 //ceil() 向上取整 System.out.println(Math.ceil(65.5));//66.0 //floor()向下取整 System.out.println(Math.floor(65.5));//65.0 // max(int a,int b) 返回最大值 System.out.println(Math.max(10,36));//36 // random( ) 返回 0.0 到 1.0 的随机数 System.out.println(Math.random());//0.7877114246802791 // long round(double a) double型的数据a转换为long型(四舍五入) System.out.println(Math.round(25.6));//26 } }
2.Random类
java.util.Random
产生随机数的类
- public boolean nextBoolean()
随机生成true/false - public int nextInt( )
随机生成int范围内的一个数 - public int nextInt(@Range(from = 1, to = Integer.MAX_VALUE) int bound)
随机生成一个范围内的数字 - public void nextBytes(byte[] bytes)
随机生成一个数组
import java.util.Arrays; import java.util.Random; //Random类 //生成随机数 public class Demo001 { public static void main(String[] args) { //先创建对象 Random r=new Random(); //public boolean nextBoolean() //随机生成true/false System.out.println(r.nextBoolean());//true //public int nextInt() //随机生成int范围内的一个数 System.out.println(r.nextInt());//1236471934 //public int nextInt(@Range(from = 1, to = Integer.MAX_VALUE) int bound) //随机生成一个范围内的数字 System.out.println(r.nextInt(20));//15 //public void nextBytes(byte[] bytes) //随机生成一个数组 byte[] array=new byte[10]; r.nextBytes(array); System.out.println(Arrays.toString(array)); //[-80, 61, -61, 23, 108, -40, 98, -61, -103, 74] } }
3.System类
java.lang.System
System类包含几个有用的类字段和方法。 它不能被实例化。
System类提供的System包括标准输入,标准输出和错误输出流; 访问外部定义的属性和环境变量; 一种加载文件和库的方法; 以及用于快速复制阵列的一部分的实用方法。
-public static void exit(int status)
关闭程序,让虚拟机停止
public class Demo001 { public static void main(String[] args) { //public static void exit(int status) //关闭程序,让虚拟机停止 System.exit(0); //后面的程序不再执行 System.out.println("123"); } }
- public static long currentTimeMillis()
获得当前时间,返回毫秒值;
时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。
实际应用中,可用于测试程序的运行时间;
public class Demo002 { public static void main(String[] args) { //public static long currentTimeMillis() //获得当前时间,返回毫秒值 //时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。 System.out.println(System.currentTimeMillis());//1619946068342 } }
- public static void arraycopy(@NotNull Object src,int srcPos,@NotNull Object dest,int destPos,int length)
src:原数组,srcpos:从原数组的第几个下标位置开始;
desc:复制到的目标数组; descpos:目标数组的第几个下标位置开始传入;
length:复制的数组长度
import java.util.Arrays; public class Demo003 { public static void main(String[] args) { //public static void arraycopy(@NotNull Object src,int srcPos,@NotNull Object dest,int destPos,int length) //src:原数组,srcpos:从原数组的第几个下标位置开始; //desc:复制到的目标数组; descpos:目标数组的第几个下标位置开始传入; //length:复制的数组长度 //原数组a int[] a={1,4,3,5,2,7,1,3}; //目标数组b int[] b=new int[10]; //从数组a的第0个下标位置开始,复制5个元素,到数组b的第2个下标位置开始; System.arraycopy(a,0,b,2,5); //输出数组b System.out.println(Arrays.toString(b)); //[0, 0, 1, 4, 3, 5, 2, 0, 0, 0] } }
4.Date类/Calendar类/ SimpleDateFormat类
Date类
代表当前系统时间;
构造方法:
- 有参构造:public Date(long date)
import java.util.Date; public class Demo001 { public static void main(String[] args) { //有参构造; // 传入Long类型的时间(时间的表达格式为那一刻的计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。) //public Date(long date) Date d=new Date(1619946068342L); //输出为那一刻的时间 System.out.println(d); //Sun May 02 17:01:08 CST 2021 } }
- 无参构造:public Date( )
import java.util.Date; public class Demo002 { public static void main(String[] args) { //无参构造:public Date() Date d=new Date(); //返回当前计算机时间 System.out.println(d); //Sun May 02 17:44:32 CST 2021 } }
几个方法:(部分方法已过期)
获取时间的方法:
-
public int getYear( );获取年份
-
public int getMonth( );获取月份;注意月份是从零开始的,
-
public int getDay( );获取星期几;也是从0开始的;
0(星期天),1(周一),2,3,4,5,6, -
public long getTime( )
返回long类型的毫秒值;和System类中获取的时间是一样的
import java.util.Date; public class Demo002 { public static void main(String[] args) { //无参构造:public Date() Date d=new Date(); //返回当前计算机时间 System.out.println(d); //Sun May 02 17:44:32 CST 2021 //public int getYear();获取年份 System.out.println(d.getYear()+1900);//2021 //public int getMonth();获取月份;注意月份是从零开始的, System.out.println(d.getMonth()+1);//5 //public int getDay();获取星期几;也是从0开始的 //0(星期天),1(周一),2,3,4,5,6, System.out.println(d.getDay());//0 //public long getTime() //返回long类型的毫秒值;和System类中获取的时间是一样的 System.out.println(d.getTime());//1619949019785 } }
设置时间方法:
-
public void setYear(int year)
设置年份 -
public void setMonth(int month)
设置月份 -
public void setTime(long time)
设置时间,传入long类型的毫秒值;
import java.util.Date; public class Demo008 { public static void main(String[] args) { //设置时间的方法 Date d2=new Date(); //public void setYear(int year) //设置年份 d2.setYear(2015); //获取年份 System.out.println(d2.getYear());//2015 //public void setMonth(int month) //设置月份 d2.setMonth(6); System.out.println(d2.getMonth());//6 //public void setTime(long time) //设置时间,传入long类型的毫秒值; d2.setTime(1619949019785L); System.out.println(d2.getYear()+1900);//2021 } }
Calendar类
public abstract class Calendar
所述Calendar类是一个抽象类,可以为在某一特定时刻和一组之间的转换的方法calendar fields如YEAR , MONTH , DAY_OF_MONTH , HOUR ,等等,以及用于操纵该日历字段,如获取的日期下个星期。 时间上的瞬间可以用毫秒值表示,该值是从1970年1月1日00:00 00:00.000 GMT(Gregorian)的Epoch的偏移量。
Calendar提供了一种类方法getInstance ,用于获取此类型的一般有用的对象。 Calendar的getInstance方法返回一个Calendar对象,其日历字段已使用当前日期和时间进行初始化:
Calendar rightNow = Calendar.getInstance( );
由于它的输出时间是GregorianCalendar类的,所以也可以直接new 一个GregorianCalendar( );
import java.util.Calendar; import java.util.GregorianCalendar; //Calendar类的使用 public class Demo001 { public static void main(String[] args) { // Calendar rightNow = Calendar.getInstance(); Calendar rightNow=new GregorianCalendar(); System.out.println(rightNow); } }
输出当前时间:
java.util.GregorianCalendar[time=1619951333463,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=4,WEEK_OF_YEAR=19,WEEK_OF_MONTH=2,DAY_OF_MONTH=2,DAY_OF_YEAR=122,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=6,HOUR_OF_DAY=18,MINUTE=28,SECOND=53,MILLISECOND=463,ZONE_OFFSET=28800000,DST_OFFSET=0]
其中包含的一些日期字段,可以直接去通过Calendar调用:
// Calendar rightNow = Calendar.getInstance(); Calendar rightNow=new GregorianCalendar(); System.out.println(rightNow); //获取年份 System.out.println(rightNow.get(Calendar.YEAR));//2021 //获取这个月的第几天 System.out.println(rightNow.get(Calendar.DAY_OF_MONTH));//2 //获取月份,月份是从0开始的 System.out.println(rightNow.get(Calendar.MONTH));//4
也有一部分方法可以被引用变量rightNow直接调用的;
//public final java.util.Date getTime() //注意用的是Date类的方法,获取计算机时间 System.out.println(rightNow.getTime());//Sun May 02 18:38:54 CST 2021 //public long getTimeInMillis() //获取毫秒值时间 System.out.println(rightNow.getTimeInMillis());//1619952005857 //public final void set(int year,int month,int date) //设置时间 rightNow.set(2021,5,8);
SimpleDateFormat类
日期格式化类;
SimpleDateFormat是一个具体的类,用于以区域设置的方式格式化和解析日期。 它允许格式化(日期文本),解析(文本日期)和归一化。
日期和时间格式由日期和时间模式字符串指定。
- 日期对象转化为指定格式的字符串;
public final String format(java.util.Date date)
import java.text.SimpleDateFormat; import java.util.Date; //SimpleDateFormat类的使用 //日期格式化 public class Demo001 { public static void main(String[] args) { //日期对象转化为指定格式的字符串 //这里新建了一个Date对象 Date d=new Date(); //新建simpleDateFormat对象 //在其中写入将要显示的格式,后面还可以加入国家来匹配语言; SimpleDateFormat sdf=new SimpleDateFormat("yyyy年/MM月/dd日 (E) HH时mm分ss秒 "); //public final String format(java.util.Date date) //日期对象转为字符串 String s=sdf.format(d); System.out.println(s);//2021年/05月/02日 (星期日) 19时00分35秒 } }
- 指定格式的字符串转为日期对象
public java.util.Date parse(String source)
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Demo002 { public static void main(String[] args) { //指定格式的字符串转为日期对象 String s1=" 2001-2-2 13:13:13 星期五"; //新建simpleDateFormat对象;写上字符串对应的格式 SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E"); //public java.util.Date parse(String source) //将字符串转化为Date对象 //此处需要try,catch处理ParseException try { Date d1=sdf1.parse(s1); System.out.println(d1);//Fri Feb 02 13:13:13 CST 2001 } catch (ParseException e) { e.printStackTrace(); } } }
5.BigInteger类
不可变的任意精度整数。位于java.math包中
在 Java 中,有许多数字处理的类,比如 Integer类,但是Integer类有一定的局限性。Integer 是 Int 的包装类,int 的最大值为 2^31-1。若希望描述更大的整数数据时,使用Integer 数据类型就无法实现了,所以Java中提供了BigInteger 类。BigInteger类型的数字范围较Integer,Long类型的数字范围要大得多,它支持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值而不会丢失任何信息。
构造方法
几个基本方法
- public BigInteger add(BigInteger val)
加法 - public BigInteger subtract(BigInteger val)
减法 - public BigInteger multiply(BigInteger val)
乘法 - public BigInteger divide(BigInteger val)
除法
6.BigDecimal类
在计算机中不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去一定的精确度。根本原因是十进制值通常没有完全相同的二进制表示形式;十进制数的二进制表示形式可能不精确。只能无限接近于那个值;
这时就需要用到BigDecimal类;可以达到精确计算;避免精度损失;
BigDecimal类提供了算术,缩放操作,舍入,比较,散列和格式转换的操作。
构造方法:
同样的,它也可以传入各种参数;
基本的算术方法;
需要注意的是;在除法运算过程中;有除不尽的状况出现时,可以选择使用方法,进行保留几位小数,以及是否四舍五入;
import java.math.BigDecimal; //BigDicemal类 //浮点类型的精确计算 public class Demo001 { public static void main(String[] args) { BigDecimal a=new BigDecimal("20"); BigDecimal b=new BigDecimal("3"); //public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode) //scale为5, 则保留5位小数,BigDecimal.ROUND_HALF_UP:四舍五入; System.out.println(a.divide(b,5,BigDecimal.ROUND_HALF_UP));//6.66667 //scale为8, 则保留8位小数,BigDecimal.ROUND_FLOOR:不进行四舍五入; System.out.println(a.divide(b,8,BigDecimal.ROUND_FLOOR));//6.66666666 } }
这篇关于JavaSE基础六----<一常用类(3)一>【Math类Random类|System类,Date类Calendar类SimpleDateFormat类,BigInteger类BigDecimal类】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26手写消息中间件:从零开始的指南
- 2024-11-26Java语音识别项目资料:新手入门教程
- 2024-11-26JAVA语音识别项目资料:新手入门教程
- 2024-11-26Java语音识别项目资料:入门与实践指南
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料:新手入门教程
- 2024-11-25Java创意资料:新手入门的创意学习指南
- 2024-11-25JAVA对接阿里云智能语音服务资料详解:新手入门指南
- 2024-11-25Java对接阿里云智能语音服务资料详解