每日知识点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,没确定就不能,返回值是什么看最大类型参数是什么那返回值就是什么.
浙公网安备 33010602011771号