1.函数重载(overload)和函数覆盖(override)
重载(Overload):
在类中多个同名函数同时存在,具有不同的参数个数/类型。方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。
特点:与返回值类型无关,只看参数列表。
优点:方便阅读,优化设计
注意:不能有两个名字相同,参数类型,参数个数也相同却返回不同类型值的函数。
public class A{
//show方法被重载
public void show(){
}
//show方法被重载
public void show(int a){
}
}
覆盖(override):
出现在继承的关系中,子类中出现了与父类一模一样的方法时,会有覆盖操作。
特点:(1)静态函数只能覆盖静态函数;
(2)覆盖时,子类方法权限一定要大于父类方法权限
(3)不能抛出新的异常,或者父异常
应用情景:
当子类需要父类功能,而功能主体子类有自己特有功能时,可以复写父类中的方法,这样既包括了父类的功能,又定义了子类特有的功能。
public class A{
public void show(){
System.out.println("A");
}
}
public class B{
//子类B重写了父类A的show方法
public void show(){
System.out.println("B");
}
}
2.集合相关
2.1判断List为空
if(null == list || list.size() ==0 ){
}
list.isEmpty()和list.size()==0 没有区别
isEmpty()判断有没有元素
而size()返回有几个元素
如果判断一个集合有无元素
建议用isEmpty()方法.这清晰,简明
但是list!=null和list.isEmpty()有什么区别呢?
这就相当与,你要喝水,前面就是判断是不是连水杯都没有,
后面就是判断水杯里面没有水,
连盛水的东西都没有,
这个水从何而来?
所以一般判断是
if(list!=null && !list.isEmpty()){
这里面取list中的值
}else{
做其它处理
}
来源:判断List为空](https://blog.csdn.net/Baple/article/details/8604585)
Map、List的嵌套
在返回json数据的时候,往往需要进行Map、list的反复嵌套。
不同于Python,Java需要先创建对象再使用,同时最好还指定相应的泛型。
例如,
HashMap<String, HashMap<String, Integer>> czbkMap = new HashMap<String, HashMap<String, Integer>>();
Map实现一对多
一般而言,一个key只允许出现一次。因此如何实现一对多呢?
Map<String,List> map = new HashMap<String,List>();
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
map.put("mylist",list);
List<String> results = (List<String>)map.get("mylist");