黑马程序员——常用的API之冷门兵器
2016-01-04 05:40
661 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
A:BigDecimal
float类型和double的数据存储和整数不一样。它们大部分的时候,都是带有有效数字位。
于是在运算的时候,float类型和double很容易丢失精度。所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal
BigDecimal类:不可变的、任意精度的有符号十进制数,可以解决数据丢失问题。
BigInteger:可以让超过Integer范围内的数据进行运算
C:Math用于数学运算的类
G:DateForamt 对日期和字符串进行格式化和解析的抽象类
但是由于是抽象类,所以使用具体子类SimpleDateFormat。
把当前的时间以"yyyy年MM月dd日 HH:mm:ss"格式打印出来,且把"2008-08-08 12:12:12"解析为时间
案例2:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天。
案例3:获取任意一年的二月有多少天
A:BigDecimal
float类型和double的数据存储和整数不一样。它们大部分的时候,都是带有有效数字位。
于是在运算的时候,float类型和double很容易丢失精度。所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal
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) / * public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):商,几位小数,如何舍取B:BigInteger
BigInteger:可以让超过Integer范围内的数据进行运算
* 构造方法: * BigInteger(String val)<pre name="code" class="java"> * 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):返回商和余数的数组
C:Math用于数学运算的类
* 成员变量: * public static final double PI * public static final double E * 成员方法: * public static int abs(int a):绝对值 * public static double ceil(double a):向上取整 * public static double floor(double a):向下取整 * public static int max(int a,int b):最大值 (min自学) * public static double pow(double a,double b):a的b次幂 * public static double random():随机数 [0.0,1.0) * public static int round(float a) 四舍五入(参数为double的自学) * public static double sqrt(double a):正平方根
// public static double ceil(double a):向上取整 System.out.println("ceil:" + Math.ceil(12.34));//13 System.out.println("ceil:" + Math.ceil(12.56));//13 System.out.println("--------------"); // public static double floor(double a):向下取整 System.out.println("floor:" + Math.floor(12.34));//12 System.out.println("floor:" + Math.floor(12.56));//12 System.out.println("--------------");请设计一个方法,可以实现获取任意范围内的随机数
public static int getRandom(int start, int end) { // 回想我们讲过的1-100之间的随机数 // int number = (int) (Math.random() * 100) + 1; // int number = (int) (Math.random() * end) + start; // 发现有问题了,怎么办呢? int number = (int) (Math.random() * (end - start + 1)) + start; return number;D:Random:产生随机数的类
* 构造方法: * public Random():没有给种子,用的是默认种子,是当前时间的毫秒值 * public Random(long seed):给出指定的种子 * * 给定种子后,每次得到的随机数是相同的。 * * 成员方法: * public int nextInt():返回的是int范围内的随机数 * public int nextInt(int n):返回的是[0,n)范围的内随机数E:System类包含一些有用的类字段和方法,它不能被实例化。
* 方法: * public static void gc():运行垃圾回收器。 * public static void exit(int status):终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。 * public static long currentTimeMillis():返回以毫秒为单位的当前时间 * public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length) * 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置,总共复制length个元素。数组复制的案例
public class SystemDemo { public static void main(String[] args) { // 定义数组 int[] arr = { 11, 22, 33, 44, 55 }; int[] arr2 = { 6, 7, 8, 9, 10 }; // 用arr的22,33替换arr2的8,9 // 从arr数组的第2个元素开始复制到arr2数组的第3个元素,总共复制2个元素。 System.arraycopy(arr, 1, arr2, 2, 2); System.out.println(Arrays.toString(arr)); System.out.println(Arrays.toString(arr2)); } }F:Date 表示特定的瞬间,精确到毫秒。
* 构造方法: * Date():根据当前的默认毫秒值创建日期对象 * Date(long date):根据给定的毫秒值创建日期对象
/* 从Date得到一个毫秒值 * getTime() * 把一个毫秒值转换为Date * 构造方法 * setTime(long time) */
G:DateForamt 对日期和字符串进行格式化和解析的抽象类
但是由于是抽象类,所以使用具体子类SimpleDateFormat。
* Date -- String(格式化) * public final String format(Date date) * * String -- Date(解析) * public Date parse(String source)
* SimpleDateFormat的构造方法: * SimpleDateFormat():默认模式 * SimpleDateFormat(String pattern):给定的模式 * 这个模式字符串该如何写呢? * 通过查看API,我们就找到了对应的模式 * 年 y * 月 M * 日 d * 时 H * 分 m * 秒 s * 2014年12月12日 12:12:12对应 * yyyy年MM月dd日 HH:mm:ss案例:
把当前的时间以"yyyy年MM月dd日 HH:mm:ss"格式打印出来,且把"2008-08-08 12:12:12"解析为时间
public class DateFormatDemo { public static void main(String[] args) throws ParseException { // Date -- String // 创建日期对象 Date d = new Date(); // 创建格式化对象,给定模式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); // public final String format(Date date) String s = sdf.format(d); System.out.println(s); //String -- Date String str = "2008-08-08 12:12:12"; //在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配 SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date dd = sdf2.parse(str); System.out.println(dd); } }H:Calendar 对日历进行操作的类
/* 最常用来为其创建对象的方式是通过该类的静态方法getInstance() * public static Calendar getInstance() 返回的 Calendar 基于当前系统的日历时间(北京时间)。 * * 获取日历字段的方法: * public int get(int field):返回给定日历字段的值。 * 日历类中的每个日历字段都是静态的成员变量,并且是int类型。使用类名直接获取 * 如:Calendar.YEAR;Calendar.MONTH;Calendar.DATE;<pre name="code" class="java"> */
// 其日历字段已由当前日期和时间初始化: Calendar rightNow = Calendar.getInstance(); // 子类对象 // 获取年 int year = rightNow.get(Calendar.YEAR); // 获取月 int month = rightNow.get(Calendar.MONTH); // 获取日 int date = rightNow.get(Calendar.DATE); System.out.println(year + "年" + (month + 1) + "月" + date + "日");设置和更改日历字段的方法
/* * public void add(int field,int amount):根据给定的日历字段和对应的时间,来对当前的日历进行操作。 * public final void set(int year,int month,int date):设置当前日历的年月日 */案例1:获取5年后的10天前日期,然后把当前日期设置为2011年11月11日
public class CalendarDemo { public static void main(String[] args) { // 获取当前的日历时间 Calendar c = Calendar.getInstance(); // 5年后的10天前 c.add(Calendar.YEAR, 5); c.add(Calendar.DATE, -10); // 获取年 int year = c.get(Cal 4000 endar.YEAR); // 获取月 int month = c.get(Calendar.MONTH); // 获取日 int date = c.get(Calendar.DATE); System.out.println(year + "年" + (month + 1) + "月" + date + "日"); System.out.println("--------------"); c.set(2011, 11, 11); // 获取年 year = c.get(Calendar.YEAR); // 获取月 month = c.get(Calendar.MONTH); // 获取日 date = c.get(Calendar.DATE); System.out.println(year + "年" + (month + 1) + "月" + date + "日"); } }
案例2:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天。
public class Test9 { public static void main(String[] args) throws ParseException { //给定模式创建SimpleDateFormat对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入一个日期,格式为‘yyyy-MM-dd’:"); String str = sc.nextLine(); //解析日期 Date d = sdf.parse(str); //创建日历对象 Calendar cal = Calendar.getInstance(); //设置当前的日历时间为解析的时间 cal.setTime(d); //获取星期 int week = cal.get(Calendar.DAY_OF_WEEK); System.out.println("这一天是星期"+(week-1)); //获取天数 int day = cal.get(Calendar.DAY_OF_YEAR); System.out.println("这一天是一年中的第"+day+"天"); } }
案例3:获取任意一年的二月有多少天
/* * 获取任意一年的二月有多少天 * * 分析: * A:键盘录入任意的年份 * B:设置日历对象的年月日 * 年就是A输入的数据 * 月是2 * 日是1 * C:把时间往前推一天,就是2月的最后一天 * D:获取这一天输出即可 */ public class CalendarTest { public static void main(String[] args) { // 键盘录入任意的年份 Scanner sc = new Scanner(System.in); System.out.println("请输入年份:"); int year = sc.nextInt(); // 设置日历对象的年月日 Calendar c = Calendar.getInstance(); c.set(year, 2, 1); // 其实是这一年的3月1日 // 把时间往前推一天,就是2月的最后一天 c.add(Calendar.DATE, -1); // 获取这一天输出即可 System.out.println(c.get(Calendar.DATE)); } }
相关文章推荐
- Android Manifest 用法
- 什么是 GraphQL?
- Spark RDD API详解(一) Map和Reduce
- 一个小型js框架myJSFrame附API使用帮助
- 详细分析交换机、路由器、集线器的区别和联系
- PowerShell打开或关闭光驱
- 批处理的api WMIC学习体会有感第1/2页
- 批处理 API实现文件下载的代码第1/2页
- Lua教程(十七):C API简介
- 强制删除工具 xdelbox xdelbox1.5正式版下载
- 揪出交换机端口背后“凶手”导致网速太慢
- 电脑重启后突然检测不到硬盘的原因分析与解决办法
- C#中设计、使用Fluent API
- Google官方支持的NodeJS访问API,提供后台登录授权
- PQ分区出错! 巧用Ghost急速补救的绝妙办法
- 深入C++中API的问题详解
- 使用WindowsAPI实现播放PCM音频的方法
- 40余种刻录盘片详细对照分析介绍第1/2页
- fullCalendar中文API官方文档
- 详解ASP.NET WEB API 之属性路由