java知识点11

JDK8之前日期和时间API测试:
1.Java.lang.System类,提供public static long currentTimeMillis()来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差:long time = System.currentTimeMillis(),称为时间戳
2.java.util.Date类
2.1.两个构造器的使用
2.2.两个方法的使用
   构造器1:Date():创建一个对应当前时间的Date对象
   toStrting():显示当前的年,月,日,时,分,秒
   getTime():获取当前Date对象对应的毫秒数。(时间戳)
   构造器2:创建指定毫秒数的Date对象:Date data1 = new Date(123463123L)
3.java.sql.Date对应着数据库中的日期类型的变量
创建对象:java.sql.Date date3 = new java.sql.Date()

关于时间的类:(具体方法见笔记),类似于String,存在不可变性
LocalDate,LocalTime,LocalDateTime
Instant.now()//获取本初子午线对应的标准时间
DateTimeFormatter:格式化或解析日期时间

1.说明:java中的对象,正常情况下,只能进行比较:== 或 !=,不能使用>或<,但是在开发场景下,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小,使用两个接口中的任意一个:

2.Comparable接口的使用举例
2.1.像String,包装类等实现了该接口,重写了compareTo()方法,给出了比较两个对象大小的方式,可以直接进行了从小到大的排列(Arrays.sort())默认升序
2.2.对于自定义类来说,如果需要排序,我们可以让自定义类来实现Comparable接口,重写comparableTo(obj)方法,在该方法中指明如何排序
public int compareTo(Object o){
    if(o inistanceof Goods){//判断o是否是Goods类的实例
        Goods goods = (Goods)o;//强转
        if(this.price>goods.price){
            return 1;}}}}
3.comparator接口的使用:定制规则排序
3.1.重写compare(object o1,object o2)方法,比较o1和o2的大小
   如果方法返回正整数,则表示o1大于o2,如果返回0,表示相等,返回负整数,表示o1小于o2

java.math包的BigInteger可以表示不可变的任意精度的整数
在商业计算中要求数字精度比较高,用到java.math.BigDecimal类

1.枚举类的使用
1.1枚举类的理解:类的对象只有有限个,确定的,我们称此类为枚举类
1.2当需要定义一组常量时,强烈建议使用枚举类
1.3如果枚举类中只有一个对象,则可以作为单例模式的实现方法
2.如何定义枚举类:jdk5.0之后,使用enum关键字定义
enum Season1{
    //1.提供当前枚举类的对象,多个对象之间用“,”隔开,末尾对象用“;”结束
    SPRING("chuntian","chunnuanhuakai"),
    SUMMER(),
    AUTUMN(),
    WINTER();
    
    //2.声明Season对象的属性:private final修饰
    private final String seasonName;
    private final String seasonDesc;
    //3.私有化类的构造器,并给对象属性赋值
    private Season1(String seasonName,String seasonDesc){
        this.seasonName = seasonName;
使用:Season1 summer = Season1.SUMMER;
说明:定义的枚举类默认继承于java.lang.Enum类
3.常用方法:见笔记
1.toString()
2.values():以数组形式返回枚举类中对象
3.valueof(String objName):返回枚举类中对象名是objName的对象,若没找到,则抛异常

注解的使用:
1.理解Annotation:
1.1.jdk5.0新增功能
1.2.Annotation其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并可以让程序员在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。
1.3.在javase中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等,
2.Annotation的使用示例
示例1:生成文档相关的注解
示例2:在编译时进行格式检查(JDK内置的三个基本注解)
@Override:限定重写父类方法,该注解只能用于方法
@Deprecated:用于表示所修饰的元素(类,方法等已过时)
@SupprerssWarrings:抑制编译器警告
示例3:跟踪代码依赖性,实现替代配置文件功能
3.jdk提供的4种元注解:Retention,Target,Documented,Inherited
元注解:对现有注解进行解释说明的注解
4.可重复注解
5.类型注解

1.集合框架的概述:
1.1.集合,数组都是对多个数据进行存储操作的结构,简称java容器
1.2.说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi)
2.1数组在存储多个数据方面的特点
   一旦初始化以后,其长度就确定了
   数组一旦定义好,其元素的类型也就确定了。
2.2.数组缺点:
   一旦初始化以后,长度就不可修改
   数组中提供的方法非常有限,对于添加,删除,插入等操作非常不便,同时效率不高
   获取数组中实际元素的个数的需求,数组没有现成的属性或方法可用
   数组存储数据的特点:有序,可重复。对于无序,不可重复的需求,不能满足

1.集合框架:
1.1.Collection接口:单列集合,用来存储一个一个的对象
   List接口:存储有序的,可重复的数据。“动态数组”
   Set接口:存储无序的,不可重复的数据
1.2.Map接口:双列集合,用来存储一对(key-value)一对的数据

collection接口中的方法的使用
说明:向collection接口的实现类的对象中添加数据obj时,要求obj所在类要重写equals().
1.add(Object e):将元素e添加到集合coll中
2.size():获取添加的元素的个数
3.addAll():将集合中的元素添加到当前集合中
4.isEmpty():判断当前集合是否为空
5.clear():清空元素
6.contains(Object obj):判断当前集合中是否包含obj
   我们在判断时会调用obj对象所在类的equals()
7.containsAll(Collection coll1):判断形参coll1中的所有元素是否都存在于当前集合中。
8.remove(Object obj):从当前集合中移除obj(注意:List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。)
9.removeAll(Collection coll1):差集:从当前集合中移除coll1中所有的元素
10.retainAll(Collection coll1):交集:获取当前集合和coll1集合的交集,并返回给当前集合
11.equals(Object obj):要想返回true,需要当前集合和形参集合所有元素都相同
12.hashCode():返回当前对象哈希值
13.toArray():集合转数组    Arrays.asList():数组转集合
14.iterator():返回Iterator接口的实例,用于遍历集合元素,放在IteratorTest.java中测试

Iterator对象称为迭代器,主要用于遍历Collection集合中的元素
Iterator iterator = coll.iterator();
while(iterator.hasNext()){    //hasNext()判断是否还有下一个元素
    syso(iterator.next());}    //next():1.指针下移,2.将下移以后集合位置上的元素返回
删除集合中“tom”元素:
while(iterator.hasNext()){
    Object obj = iterator.next();
    if("tom".equals(obj)){
        iterator.remove();}}

foreach循环,用于遍历集合,数组,内部仍然调用了迭代器
for(集合元素的类型 局部变量 : 集合对象)//数组同理
for(Object obj : coll){
    syso(obj);}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值