黑马程序员11——单例设计模式 Runtime类 日期 日历 数组高级部分 大数据运算
来源:互联网 发布:杭州做网络推广的公司 编辑:程序博客网 时间:2024/06/14 15:46
------- android培训、java培训、期待与您交流! ----------
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 四舍五入
0 0
- 黑马程序员11——单例设计模式 Runtime类 日期 日历 数组高级部分 大数据运算
- 黑马程序员----日期Date类,日历 Calendar类。Math类的一部分,大数据运算BigInteger,BigDecimal。
- 黑马程序员—单例设计模式
- 黑马程序员—单例设计模式
- 黑马程序员—单例设计模式
- 黑马程序员——第九篇:Integer、Character、正则表达式、大数据运算、日期类
- 黑马程序员--设计模式——单例设计模式
- 黑马程序员————单例设计模式
- 黑马程序员———java 单例设计模式
- 黑马程序员——单例设计模式
- 黑马程序员——单例设计模式
- 黑马程序员——单例设计模式
- 黑马程序员——多线程和单例设计模式
- 黑马程序员——单例设计模式
- 黑马程序员 JAVASE——单例设计模式
- 黑马程序员——单例设计模式
- 黑马程序员——单例设计模式
- 黑马程序员——单例设计模式
- JDBC与WOSA/XFS
- 河马程序员10——基本类型对象包装类 、正则表达式、 Math类
- placement new的使用及好处
- 桶排序
- 淘宝技术这十年
- 黑马程序员11——单例设计模式 Runtime类 日期 日历 数组高级部分 大数据运算
- 最短路算法
- DP Good Sequences
- 黑马程序员12——集合框架1
- 陈老师的多校联合20140816||SPOJ AMR11B 三角形的有向面积
- python 基础教程之文件
- BBED工具的安装使用(一)
- web前端总结
- hibernate的第一应用程序