1、static
静态变量:
1、静态变量、静态方法,都是跟类相关,不需要new对象,直接“类名.”访问(参考反射机制中,类加载静态方法)
2、静态变量放在方法区中。
3、静态变量:又称类变量,属于类的,所有类的实例都可以共享该静态变量,静态变量存在方法区,在内存中只存在一份,任一实例修改它的时候,其他实例访问的是修改后的值
静态方法:
1、静态方法只能访问静态成员,不能使用this、super
2、静态方法的好处就是不用生成类的实例就可以直接调用。
3、static方法修饰的成员不再属于某个对象,而是属于它所在的类。只需要通过其类名就可以访问,不需要再消耗资源反复创建对象。
4、在类第一次加载的时候,static就已经在内存中了,直到程序结束后,该内存才会释放。如果不是static修饰的成员函数,在使用完之后就会立即被JVM回收。
5、什么时候使用static?
如果这个方法是作为一个工具来使用的,就声明为static,不需要new一个对象就可以使用。比如:connect DB就可以声明一个Connection()的static方法,因为是静态的,说明connection DB不是某个对象所特有的功能,只是作为一种连接到DB的工具
2、this
1、this在实例方法中,代表的当前的对象
2、this是一个引用,保存内存地址指向自身
3、super
1、访问父类方法 super.方法名(实参)
2、访问父类属性 super.属性名
3、调用父类构造方法 super(实参)
4、必须是“super.xxx”,this是可以单独使用的引用
4、final
- final修饰的类不能被继承
- final修饰的方法不能被覆盖
- final修饰的变量不能被修改
- 构造方法不能被final修饰
- 抽象类不能被final修饰,抽象方法需要被子类实现的
- final修饰的变量必须显示初始化
- final修饰引用时,这个引用只能指向一个对象,因为这个引用代表的地址,在栈中,因此不能被修改。但整个对象是存在堆里,是可以被修改内容