每日知识点20190415

java

  • String v = map.putIfAbsent("a", "1"):若map中不存在指定的key值(a),则使用指定的key(a)和指定的value(1)进行填充,但此时返回的数据是旧值,所以是null,即v=null,当你真正调用map.get("a")时才返回指定的value值,即1.

  • String v = map.computeIfAbsent("a", "1"):若map中不存在指定的key值(a),则使用指定的key(a)和指定的value(1)进行填充,但此时返回的数据是新值,即v=1.

  • DateTimeFormatter.parse():可以解析LocalDate、LocalTime、LocalDateTime.

  • MessageFormat:消息格式化,如MessageFormat.format("hi, my name is {0}", "zhangsan"),不仅如此,占位符后面还可以跟一个类型和一个风格,它们之间用逗号隔开.单独将choice拿出来先讲讲,{1,choice,0#no house| 1#one hose | 2#two houses},一个选择格式是由一个序列对构成的,每一个对包括一个下限和一个格式字符串,下面的列表中是其他的类型.

类型 风格
number integer、currency、percent、$
time/date short、medium、long、full、yyyy-MM-dd
  • 注解中的所有元素值必须是编译期常量.
  • Cannot annotate class literal、Cannot annotate import.

  • 注解类型有:基本类型、String、Class、enum类型、注解类型、有前面所述类型组成的数组.

  • 引导类加载器负责加载系统类,通常是用C语言来实现的.

  • 扩展类加载器用于加载jre/lib/ext目录,即使没有配置任何类路径,它也可以找到其中的各个类.

  • 系统类加载器用于加载应用类,查找类路径中的目录或者jar/zip文件里查找这些类.

  • 对泛型上下限的理解:
    先说个前提,在类型参数确定的情况是可以add具体的对象及子类,个人理解而已.
    假设: 苹果 extends 水果、香蕉 extends 水果、其他
    ? extends 水果:可以指定类型参数为水果或水果的子类,所以类型参数可能是水果也可能是苹果也可能是香蕉,不能确定具体的类型参数,更别说要添加什么类型的对象了,所以是不允许add操作,但是不管类型参数是什么,总之它就是水果,水果是它的最大类型参数,得出结论该语句不能add,但是可以确定返回值是水果.
    ? super 水果:可以指定类型参数为水果或水果的父类或Object,因为编译器不知道你传入的类型参数是什么,所以不能add水果的父类,否则很容易造成类型参数与值不匹配,但至少有一点是确定的,不管你传入的类型参数是什么,它的子类都有水果,所以不管你传入的类型参数是什么,它都可以添加水果及水果的子类,毕竟水果是确定的一个最小类型参数,但是对于返回值就要看最大类型参数,那就是Object,得出结论该语句能add指定类型参数及子类,但是返回值是Object.
    无意中想到的一个快速理解的语句:能不能add看最小类型参数确定没,就能add,没确定就不能,返回值是什么看最大类型参数是什么那返回值就是什么.

posted @ 2020-12-21 22:38  zliawk  阅读(58)  评论(0)    收藏  举报