总结日常开发过程中遇到的细节问题——不定时更新
1、toString()方法:当变量为null时候,使用toString()方法,则会报空指针错误!java.lang.NullPointerException
后经过测试变量为"",不报错
2、函数传参问题:example:针对getData(parameter),如果参数parameter是一个动态的值且为int类型,则直接写入即可,但如果是动态的值且为String类型,则函数应为getData("parameter");
3、针对字符串空值问题:字符串为空格组成,不为空值
Example:
String strSpace = "";
user.setMessageStyle(" ");
strSpace = user.getMessageStyle().toString();
System.out.println("空格:" + strSpace);
控制台输出是含有一个空格的;
4、==与equals区别:
值相同,但对象不同时,==会返回false;而equals会返回true;
5、针对遍历对象(实体类,也叫自定义类),采用反射机制来遍历;而遍历数组、List则可以直接用for循环;
反射案例:
System.out.println(user);
for (Field testField : user.getClass().getDeclaredFields()) {
//获取所有权限
testField.setAccessible(true);
System.out.println(testField.getName() + ":" + testField.get(user));
}
6、 Iterator迭代器的使用——去除List中的元素
案例——去除订单中状态为已退单的订单
//去除已退订订单
Iterator<BusinessAndOrder> it = page.getRows().iterator();
BusinessAndOrder modelList = null;
while (it.hasNext()) {
modelList = it.next();
if (modelList.getTaskStatus() == TaskSatus.RETIRED) {
it.remove();
}
}
7、对于A.equals(B),如果A为null,则在程序运行的时候,报出空指针异常错误;而Objects.equals(A,B),如果两个参数都为
null,Objects.equals(A,B) 调用将返回 true ; 如果其中一个参数为 null ,则返回 false ; 否则,如果两个参数都不为 null, 则调 用 A.equals(A,B);
equals案例:
System.out.println("===================================测试equals======================================");
String A = null;
String B = null;
System.out.println("测试equals:" + Objects.equals(A, B));
System.out.println("测试equals:" + A.equals(B));
8、Map集合允许值对象为null,并且没有个数限制,所以当get()方法的返回值为null时,可能有两种情况,一种是在集合中没有 该键对象,另一种是该键对象没有映射任何值对象,即值对象为null。因此,在Map集合中不应该利用get()方法来判断是否存在 某个键,而应该利用containsKey()方法来判断。
Map<String, String> map = new HashMap<>();
map.put("a", "a");
map.put("b", "b");
map.put("c", "c");
String key = "a";
boolean contains = map.containsKey(key);
if (contains) {
System.out.println("在Map集合中包含键名" + key);
} else {
System.out.println("在Map集合中不包含键名" + key);
}
9、