文章目录
一. 函数
方法重载
函数名相同,参数不同
可变参数
public void test(int... a){
}
静态方法与非静态方法
静态方法:可以直接使用类名调用,生命周期与类一致。
非静态方法:需要new一个对象来调用,生命周期与实例一致。
值传递,引用传递
//值传递
public void test(int a){}
//引用传递(对象的地址)
public void test(person p){}
二. 数组
初始化
// 静态初始化
int[] a = {1,2,3};
// 动态初始化
int[] a = new int[10];
a[0] = 1;
// 默认初始化
int[] a = new int[10]; //默认值为0
Arrays类
# 数组元素转字符串
Arrays.toString(a);
# 排序
Arrays.sort(a);
三. 面向对象OOP
构造方法
public class A{
//构造方法
public A(){}
}
三大特性
封装:高内聚、低耦合
继承:
this:指向当前对象的指针
super:指向父类对象的指针
构造方法中,默认调用父类构造方法super();
方法重写:
1.方法名相同@Override
2.参数列表相同
3.修饰符范围可以扩大
4.抛出异常范围可以缩小
final修饰的类不能被继承
多态:父类引用指向子类。
调用方法时,因为指向不同子类会有不同行为。
static关键字
静态变量:类变量,所有实例共享
静态方法:
静态代码块:new对象执行顺序:静态代码块->匿名代码块->构造方法
静态导入包:import static,包下的方法可以直接调用
抽象类
1.不能new对象
2.可以有普通方法
3.抽象方法非抽象子类必须要重写
//抽象类
public abstract class A{
//抽象方法
public abstract void test(){}
}
接口
面向接口编程:约束与实现分离
1.接口中的方法都默认都是public abstract
方法
2.接口的方法由子类去实现
3.接口可以多继承
// 定义接口
public interface A{
void run();
}
// 实现接口
public class B implements A{
@Override
public void run(){
}
}
内部类
成员内部类:类内部声明类
// 定义内部类
public class Outer{
public class Inner{}
}
//实例化内部类
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
静态内部类:类内部声明静态类
public class Outer{
public static class Inner{}
}
局部内部类:方法内部定义类
public class Outer{
public void test(){
class Inner{}
}
}
匿名内部类
四. 异常机制
异常分类
运行时异常:
非运行时异常:
异常捕获
try{//监控区域
}catch(Exception e){//异常处理(括号中为想要捕获的异常类型)
e.printStackTrace(); //打印错误栈信息
}catch(){//可以捕获多个异常,大异常写在下面
}
finally{//无论是否异常都执行
}
public void test() throws Exception{
throw new Exception();
}
自定义异常
public class MyException extends Exception{
//参考其他异常子类
}