黑马程序员11——单例设计模式 Runtime类 日期 日历 数组高级部分 大数据运算
2014-08-17 16:55
453 查看
------- android培训、java培训、期待与您交流! ----------
1. 单例设计模式
设计模式,解决实际发送的问题,前提是OOP思想
单例设计模式:保证一个类的对象,在内存中的唯一性
如何实现这个要求
A 不能让你去new对象,建立对象,必须调用类中的构造方法,私有化了
B 私有构造方法后,虽然外面的类,不能创建对象了,但是自己本类是可以访问私有成员的
自己本类中,创建自己类的对象
C 外面的类,如果或者这个对象呢,提供公共方法访问这个对象
2. Runtime类
java.lang.Runtime
Runtime类对象,通过getRuntime方法获取,不能自己创建
是单例设计模式编写的
Runtime r = Runtime.getRuntime();
Process exec(String s)执行,开启一个程序
传递的字符串是一个命令,windows会在环境变量中找这个命令
3. 日期类
日期这个事物,被视为对象,就有了这个事物的描述类
java.util.Date类
构造方法
空参数的构造方法
获取到运行的时候,操作系统上的时间和日期
带有一个long类型参数
传递一个long参数,毫秒值,获取到这个毫秒值指定的时间和日期
将毫秒值,转成日期对象
long getTime()将日期对象转成毫秒值
System.currentTimeMillis()
void setTime(long) 传递一个毫秒值,将毫秒值变成日期对象
日期对象 <==> 毫秒值 之间的相互转换
小结:
毫秒值转日期 构造方法, setTime
日期对象转毫秒值 getTime System.currentTimeMillis()
boolean after(Date d) 测试一个日期是否在另一个日期之后
boolean before(Date d) 测试一个日期是否在另一个日期之前
int compareTo
4. 日期的格式化
将日期格式化为我们习惯看到的格式
java.text.DateFormat 抽象类
String format(Date d)日期格式化,返回字符串
java.text.SimpleDateFormat 子类
构造方法:
SimpleDateFormat(String pattern) 传递一个字符串的日期规则
5. 日期的风格化
java.text.DateFormat 抽象类
static DateFormat getDateInstance()
return new SimpleDateFormat();
静态方法,返回的是DateFormat类的子类对象
static DateFormat getDateTimeInstance(int dateStyle, int timeStyle)
int dateStyle, int timeStyle 日期,时间的样式,2个int值
在DateFormat类中,定义好了
static int LONG
6. 将字符串转成日期对象
从图形界面,还是从手机上,网页上收到日期都是String格式
DateFormat类,非静态方法 Date parse(String s)字符串转成日期对象
计算两个日期相差多少天
2014-7-1 2015-2-8
日期不能数学计算
两个字符串转成日期对象,日期对象转成毫秒值
7. 日历类
Date方法过时,JDK1.1开始,被日历类取代
java.util.Calendar
日历字段:年,月,日,星期,在日历类中,静态常量表示
是一个抽象类,看到了子类GregorianCalendar
Calendar类中,有一个静态方法,getInstance()直接返回子类对象
java.util.GregorianCalendar[time=1405577829067,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,
YEAR=2014,MONTH=6,WEEK_OF_YEAR=29,WEEK_OF_MONTH=3,DAY_OF_MONTH=17,DAY_OF_YEAR=198,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=17,SECOND=9,MILLISECOND=67,ZONE_OFFSET=28800000,DST_OFFSET=0]
月份 0-11 星期0开头(星期日)
获取日历中的需要的内容
Calendar类中有一个获取的方法,专门用户获取日历字段,int get(日历字段)
get方法,调用一次,只获得一个日历字段
星期几的问题 星期0 星期一 。。。 星期六
get(DAY_OF_WEEK)0-6
数组 {星期日.星期一.星期六}
查表法
设置日历的方法
void set(int field, int value) 第一个参数,日历字段,第二个参数具体的数据
set(Calendar.MONTH,10)
void set(int year, int month, int date)
void setTime(Date date) 传递一个日期对象,日历就会设置在这个日期上
setTime(new Date(654765675L))
日历偏移量
add(int,int)偏移的字段,偏移的具体数值
8. 数组高级部分
数组排序,折半查找法
数组的排序,将一个无序数组,排列成有序数组
升序排列 ,小 -> 大
折半查找法
一个有顺序的数组,在这个数组中,找有没有指定的元素
如果有,返回出现的下标,没有返回负数
如果数组是无序,可以使用折半查找法,但是结果不准确
不能排序 6 5 7 1 2 4
9. 数组的工具类
Java中,有一个类,专门操作数组
java.util.Arrays,全部是静态方法
排序,折半...
sort()数组的升序,快速排序法
int binarySearch(数组,查找的数据)
找不到,返回负数,-插入点-1
将你的需要找的数据,放在数组中,保证有序,插入点
静态方法toString()将数组变成字符串
10. 大数据运算
对于超级大数,不能在用基本数据类型表示
提供了高精度计算,适合做财务软件
java.math包中
BigInteger
构造方法,传递字符串格式的数字,数字包装成BigInteger
+ - * / 不采用运算符实现,采用方法实现
加法运算
BigInteger add(BigInteger val)
减法运算
BigInteger subtract(BigInteger val)
乘法运算
BigInteger multiply(BigInteger val)
除法运算
BigInteger divide(BigInteger val)
BigDecimal
构造方法,传递字符串格式的数字,包装成BigDecimal对象
除法运算
BigDecimal divied(BigDecimal big)
Non-terminating decimal expansion; no exact representable decimal result.
除法出现了无限不循环小数
BigDecimal divied(BigDecimal big,保留位数,舍入的模式)
ROUND_HALF_UP 四舍五入
1. 单例设计模式
设计模式,解决实际发送的问题,前提是OOP思想
单例设计模式:保证一个类的对象,在内存中的唯一性
class Person{ private Person(){} private static final Person p = new Person(); public static Person get(){ return p; } } class Demo{ main(){ Person p = Person.get(); } }
如何实现这个要求
A 不能让你去new对象,建立对象,必须调用类中的构造方法,私有化了
B 私有构造方法后,虽然外面的类,不能创建对象了,但是自己本类是可以访问私有成员的
自己本类中,创建自己类的对象
C 外面的类,如果或者这个对象呢,提供公共方法访问这个对象
package cn.itcast.single; /* * 实现一个类对象在内存中的唯一性 * 单例设计模式 * 下面的写法 * private static final Single s = new Single(); * 类运行加载的时候,进入了静态区,直接创建了一个对象出来 * 饿汉式写法 * 饿汉式比较常见,但是面试不考 class Single{ //私有构造方法 private Single(){} //本类中创建自己的对象 private static final Single s = new Single(); //提供公共方法。返回这个对象 public static Single getInstance(){ return s; } } */ //单例模式的,懒汉式写法,延迟加载 //懒汉式,如果多线程同时访问这个方法,对象的不唯一 class Single{ //私有构造方法 private Single(){} //定义本类类型的成员变量,不创建对象 private static Single s = null; //提供一个公共方法,返回这个对象 public static Single getInstance(){ if( s == null ) s = new Single(); return s; } } public class SingleDemo { public static void main(String[] args) { //通过类名,调用静态方法,获取对象,自己不能创建 Single s = Single.getInstance(); System.out.println(s); Single s1 = Single.getInstance(); System.out.println(s1); } }
2. Runtime类
java.lang.Runtime
Runtime类对象,通过getRuntime方法获取,不能自己创建
是单例设计模式编写的
Runtime r = Runtime.getRuntime();
Process exec(String s)执行,开启一个程序
传递的字符串是一个命令,windows会在环境变量中找这个命令
3. 日期类
日期这个事物,被视为对象,就有了这个事物的描述类
java.util.Date类
构造方法
空参数的构造方法
获取到运行的时候,操作系统上的时间和日期
带有一个long类型参数
传递一个long参数,毫秒值,获取到这个毫秒值指定的时间和日期
将毫秒值,转成日期对象
long getTime()将日期对象转成毫秒值
System.currentTimeMillis()
void setTime(long) 传递一个毫秒值,将毫秒值变成日期对象
日期对象 <==> 毫秒值 之间的相互转换
小结:
毫秒值转日期 构造方法, setTime
日期对象转毫秒值 getTime System.currentTimeMillis()
boolean after(Date d) 测试一个日期是否在另一个日期之后
boolean before(Date d) 测试一个日期是否在另一个日期之前
int compareTo
4. 日期的格式化
将日期格式化为我们习惯看到的格式
java.text.DateFormat 抽象类
String format(Date d)日期格式化,返回字符串
java.text.SimpleDateFormat 子类
构造方法:
SimpleDateFormat(String pattern) 传递一个字符串的日期规则
5. 日期的风格化
java.text.DateFormat 抽象类
static DateFormat getDateInstance()
return new SimpleDateFormat();
静态方法,返回的是DateFormat类的子类对象
static DateFormat getDateTimeInstance(int dateStyle, int timeStyle)
int dateStyle, int timeStyle 日期,时间的样式,2个int值
在DateFormat类中,定义好了
static int LONG
6. 将字符串转成日期对象
从图形界面,还是从手机上,网页上收到日期都是String格式
DateFormat类,非静态方法 Date parse(String s)字符串转成日期对象
计算两个日期相差多少天
2014-7-1 2015-2-8
日期不能数学计算
两个字符串转成日期对象,日期对象转成毫秒值
package cn.itcast.date; /* * 计算两个日期相差多少天 */ import java.util.Scanner; import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; public class DateFormatTest { public static void main(String[] args) throws Exception{ //接收用户的输入 Scanner sc = new Scanner(System.in); System.out.println("请输入日期"); String date1 = sc.nextLine(); System.out.println("请输入日期"); String date2 = sc.nextLine(); //字符串,转成日期对象 DateFormat df = DateFormat.getDateInstance(); Date d1 = df.parse(date1); Date d2 = df.parse(date2); //日期对象转成毫秒值 long time1 = d1.getTime(); long time2 = d2.getTime(); //日期的毫秒值减发 long time3 = Math.abs(time1 - time2); System.out.println(time3/1000/60/60/24); } }
7. 日历类
Date方法过时,JDK1.1开始,被日历类取代
java.util.Calendar
日历字段:年,月,日,星期,在日历类中,静态常量表示
是一个抽象类,看到了子类GregorianCalendar
Calendar类中,有一个静态方法,getInstance()直接返回子类对象
java.util.GregorianCalendar[time=1405577829067,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,
YEAR=2014,MONTH=6,WEEK_OF_YEAR=29,WEEK_OF_MONTH=3,DAY_OF_MONTH=17,DAY_OF_YEAR=198,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=17,SECOND=9,MILLISECOND=67,ZONE_OFFSET=28800000,DST_OFFSET=0]
月份 0-11 星期0开头(星期日)
获取日历中的需要的内容
Calendar类中有一个获取的方法,专门用户获取日历字段,int get(日历字段)
get方法,调用一次,只获得一个日历字段
星期几的问题 星期0 星期一 。。。 星期六
get(DAY_OF_WEEK)0-6
数组 {星期日.星期一.星期六}
查表法
设置日历的方法
void set(int field, int value) 第一个参数,日历字段,第二个参数具体的数据
set(Calendar.MONTH,10)
void set(int year, int month, int date)
void setTime(Date date) 传递一个日期对象,日历就会设置在这个日期上
setTime(new Date(654765675L))
日历偏移量
add(int,int)偏移的字段,偏移的具体数值
8. 数组高级部分
数组排序,折半查找法
数组的排序,将一个无序数组,排列成有序数组
升序排列 ,小 -> 大
折半查找法
一个有顺序的数组,在这个数组中,找有没有指定的元素
如果有,返回出现的下标,没有返回负数
如果数组是无序,可以使用折半查找法,但是结果不准确
不能排序 6 5 7 1 2 4
9. 数组的工具类
Java中,有一个类,专门操作数组
java.util.Arrays,全部是静态方法
排序,折半...
sort()数组的升序,快速排序法
int binarySearch(数组,查找的数据)
找不到,返回负数,-插入点-1
将你的需要找的数据,放在数组中,保证有序,插入点
静态方法toString()将数组变成字符串
10. 大数据运算
对于超级大数,不能在用基本数据类型表示
提供了高精度计算,适合做财务软件
java.math包中
BigInteger
构造方法,传递字符串格式的数字,数字包装成BigInteger
+ - * / 不采用运算符实现,采用方法实现
加法运算
BigInteger add(BigInteger val)
减法运算
BigInteger subtract(BigInteger val)
乘法运算
BigInteger multiply(BigInteger val)
除法运算
BigInteger divide(BigInteger val)
BigDecimal
构造方法,传递字符串格式的数字,包装成BigDecimal对象
除法运算
BigDecimal divied(BigDecimal big)
Non-terminating decimal expansion; no exact representable decimal result.
除法出现了无限不循环小数
BigDecimal divied(BigDecimal big,保留位数,舍入的模式)
ROUND_HALF_UP 四舍五入
相关文章推荐
- 黑马程序员--读写字节数组,随机读写流,集合IO的思维导图,多线程部分,单例设计模式,线程和进程的概念,Java中的线程的创建方式,线程的随机性,线程的状态图,多线程操作共享数据的安全性,死锁
- 黑马程序员--01.JDK5部分新特性--01【静态导入】【可变参数数组】【享元设计模式的思想】
- 【黑马程序员】java1.5新特性-----可变参数,静态导入,高级for循环及享元设计模式
- 黑马程序员——面向对象(数组工具类+单例设计模式)-第16天
- Java第六课 数组的复制与排序,Runtime类与Process类,Class类与反射API,Runtime类与单例设计模式。
- 黑马程序员----日期Date类,日历 Calendar类。Math类的一部分,大数据运算BigInteger,BigDecimal。
- 黑马程序员-JAVA高级视频_IO输入与输出-19天-5(装饰设计模式)
- 2006-7-30 数组的复制与排序,Runtime类与Process类,Class类与反射API,Runtime类与单例设计模式
- 黑马程序员_Java基础[11]_单列设计模式
- 黑马程序员——Java基础——数组工具类、设计模式和继承(一)
- 黑马程序员--Java学习11--设计模式
- 设计模式笔记(11 OBSERVER & STATE)
- 如何应用设计模式设计你的足球引擎(第一、二部分)
- 如何应用设计模式设计你的足球引擎(第三、四部分)完
- 应用程序架构本质,第 2 部分: 设计模式入门
- 如何应用设计模式设计你的足球引擎(第一、二部分)
- C#设计模式(11)-Composite Pattern
- (第Ⅰ部分 开篇).NET设计模式开篇
- 应用程序架构本质,第 2 部分: 设计模式入门(转)
- 《设计模式解析》第三部分 设计模式