美文网首页
JAVA API-day03

JAVA API-day03

作者: Junglerengar | 来源:发表于2018-03-29 14:32 被阅读0次

    A

    日期操作

    java中的时间使用标准库的Date表示,使用距离一个固定的点毫秒数表达一个特定的时间点。固定的时间点称为纪元(1970-1-1 00:00:00);
    
    java.util.Date 类封装的日期及时间信息;
    Date d=new Date();表示当前系统时间。
    
    SimpleDateFormat:日期格式类:日期类和字符串格式之间转化
      format():将日期类型(Date)数据格式化为字符串(String)。Date-->String
      parse();将字符串类型(java.lang.String)解析为日期类型(java.util.Date)。String-->Date
    
    日期模式匹配字符
    字符       含义                      示例
    y          年            yyyy年(2013年);yy年(13年)
    M          月                MM月(02月);M月(2月)
    d          日                  dd日(06日);d日(6日)
    E          星期                  E--星期日(sun)
    H          小时(24小时制)
    h          小时(12小时制)
    m          分钟                    m:1分钟;mm:01分钟
    s          秒                      ss:02秒;s:2秒
    a          am或者pm表示
    

    Calendar类

    java.Util.Calendar类用于封装日历信息,起主要作用在于其他方法对于时间分量可以运算。Calendar类是一个抽象类。获取Calendar类对象如下:
    Calendar c=Clendar.getInstance():当前系统时间
    
    月份 :             一月      二月      三月.....
    Calendar.MONTH:     0        1          2.....
    星期:                        星期天       星期一     星期二       星期三 ...
    Calendar.DAY_OF_WEEK:          1          2          3            4 
    
    通过Calendar设置日期:
    Calendar c=Calendar.getInstance();
    c.set.(Calendar.YEAR,2008);
    c.set(Calendar.MONTH,Calendar.AUGUST);
    C.set(Calendar.DATE,8);
    getActualMaximum()获取给定日历字段的可能最大值
    
    通过Calendar类获取时间分量:
    int year=c.get(Calendar.YEAR);
    int month=c.get(Calendar.MONTH)+1;
    int day=c.get(Calendar.DATE);
    int week=c.get(Calendar.DAY_OF_WEEK)-1;
    
    设置星期:
    --如果当前日期是周日,那么设置的星期1-6日期往后推;
    --如果当前日期不是周日,那么设置的星期小于当前的日期往前推,大于当前日期的往后推;如果是当前日期的不变。
    c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
    (所取日期为当前日期的所在的同一个星期)
    
    增加或减少时间分量
    c.add(Calendar.YEAR,-1);//时间往前减少一年
    c.add(Calendar.MONTH,1);//时间往后加一个月
    c.add(Calendar.DATE,3);//时间往后加3天
    

    复合框架

    Collection(集合):有两个子接口:List和set;List可重复集,set:不可重复集;
    
    元素是否重复,取决于元素的eqauls方法比较的结果;
    Collection list=new Array.List();
    boolean add(E e):用于添加元素;
    
    集合中储存的都是引用类型的元素,并且集合只保存每个对象的引用,而并非将元素对象存入集合中。
    
    boolean contains(Object o);该方法用于判定元素是否包含在该集合中,若包含返回true,反之返回false
    [元素是否包含在集合中以equals比较结果决定。]
    
    size();用于返回当前集合中的元素总数
    
    clear();清空集合中的元素
    
    isEmpty():该方法用于判断当前集合是否为空;如果为空则返回true,反之返回flase
    
    remove();删除集合中的元素
    
    get():获取集合中的元素[List方法才能使用]
    
    boolean addAll(Collection c);把传入的集合元素添加到当前集合。
        --List:有序可重复的;ArrayList()
        --Set:无序不可重复的;HashSet()
    重复性:是由集合中元素equals方法决定。
    
    迭代器:Itertor:迭代器用于遍历集合元素,如果想通过迭代器遍历元素,首先要把集合转化为迭代对象:Iterator  iterator();
    
    Iterator有两个常用方法:
    --boolean hasNext();判断集合中是否还有元素可遍历;
    --next():返回迭代对象;
    
    Iterator的remove()方法:从集合中删除next()获得的元素。在使用迭代器遍历集合时,不能通过集合的remove()方法删除否则会抛出异常。但是可
    以通过迭代器自身提供的remove()方法删除next()迭代出的元素
      注意:1、迭代器的删除方法是在原集合中删除元素
           2、在调用remove()方法前必须通过next()方法迭代过元素,那么删除的就是这个元素。并且不能再次调用remove()方法,除非再next()
              后方可以调用
    
    增强型for循环:for(元素类型 变量:集合(数组)){}增强型for循环并非新的语法,而是在编译过程中,编译器会将该训话转换为迭代器模式,所以该
    循环本质上是迭代器
    如:
    Set<String> s=new HashSet<String>();
    for(String str:s){
         System.out.println(str);
    }
    
    泛型机制:java泛型机制广泛的应用到集合框架中,所有的集合类型都带有泛型参数,这样在创建集合是可以指定放入集合中元素的类型。java编译器可以根
    据此类型检查,这样可以减少代码在运行时出现错误的可能性
    
    集合操作---线性表
      List接口是Collection接口的子接口,用于定义线性表数据结构;可以将List理解为存放对象的数组,只不过元素个数可以动态的增加和减少
      1)List接口有两个常见的实现类:ArrayList(动态数组)和LinkedList(链表)。两种实现类的方法逻辑上完全一样,但性能是有一些差别的;
     ArrayList更适合随机访问;LinedList更适合添加和删除,但是在性能要求不是很苛刻的情况下,是可以忽略这个差别的。
      2)较Collection接口List所独有的方法:
          --E get(int index):获取集合中指定下标对应的元素,下标是从零开始。
          --E add(int index,E elment):将给定元素插入到指定位置,原来位置及后续元素都顺序向后移动。
          --E set(int index,E elment):(替换功能)将给定的元素存入指定位置,并将原位置的元素返回。
          --E remove(int index):删除给定位置的元素,并把被删除的元素返回。
          --List subList(int begin,int end):用于获取List集合的子集合
          注:由于集合中存放的是对像的地址,subList()获取的是集合中对象的地址; 所以当对子集合或者原集合的修改都会影响到子集合和原集合彼此。
    
    List转换为数组:Collection接口有一个方法:toArray();作用:把集合转化为数组
    如:Object[] arr=list.toArray();
    String[] arr1=l.toArray(new String[]{});
    
    数组转换为集合:static asList():Arrays类的静态方法:把数组转换为集合
    如:list=Arrays.asList(arr);
    
    集合转换为数组时(toArray()):对转换后的数组做增删改的时候,不会抛出异常;
    数组转换为集合时(asList()):对转换后的集合做增删操作的时候会抛出异常;而做修改的时候不会抛出异常,但会对元数组产生影响。
    

    List排序

    对集合中的元素排序可以用工具类Collections.sort()方法,进行排序;那么两个元素对象之间就一定要有大小之分,如何界定的?使用Collections的
    sort排序的集合元素必须是实现了Comparable接口的实现类。该接口表示其子类是可以比较,因为实现该接口需要重写一个方法:
      ---int compareTo(T t);该方法用于使用当前与给定对象比较。
        --如果当前对象大于给定对象,那么返回值应为>0的整数;
        --如果当前对象小于给定对象,那么返回值应为<0的整数;
        --如果当前对象等于给定对象,那么返回值应为=0的整数;
    
    一旦java实现了Comparable接口,其逻辑就已经确定,如果希望在排序的操作中临时改变规则,可以采用Comparator接口实现。Comparator接
    口也有一个需要重新定义的方法:
      int compare(T t1,T t2)该方法用于使两个给定对象比较。
        --如果t1对象大于t2对象,那么返回值应为>0的整数;
        --如果t1对象小于t2对象,那么返回值应为<0的整数;
        --如果t1对象等于t2对象,那么返回值应为=0的整数;
    

    队列和栈:

      Queue:是一种数据结构,可以将队列看成一个特殊的线性表,队列限制了对线性表的一些访问方式;
    队列遵循先进先出的原则:想队列中添加元素用方法:boolean offer(E e);
      从队列的另一端取元素方法:E poll():从队首删除并返回一个元素;E peek():返回队首的元素但并不删除。
       ---Queue的实现类是LinkedList;
              Queue<String> q=new LinkedList<String>();
    
    --Deque:是队列的子接口,称为双端队列;如果将Deque限制只能从一端入队和出队,则就实现了栈的数据结构,对于栈而言:入栈称之
    为push,出栈称为pop;实现类是LinkedList。
      1)push():向栈中添加元素;
      2)pop();获取栈中的元素。
    

    相关文章

      网友评论

          本文标题:JAVA API-day03

          本文链接:https://www.haomeiwen.com/subject/bxcycftx.html