this关键字:
代表当前对象的引用,this所在函数所属对象的引用。
可以用于在构造函数中调用其他构造函数。(注意:只能定义在构造函数的第一行,因为初始化动作要先执行。)
super关键字:
- 代表父类存储空间的标识。(可以理解为父类的引用,通过这个东西可以访问父类的成员。)
- 子类的构造过程中必须调用其父类的构造方法。
- 如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父亲类的无参构造方法。
- 如果子类构造方法中既没有显示调用父类的构造方法,而父类又没有无参的构造方法,则会编译错误。
- 当然也可以自己使用super关键字调用父类的构造方法(只能写在第一行,和this一样)。
static关键字:
- static是一个修饰符,用于修饰成员,修饰的变是为静态变量,或者类变量,
- static修饰的成员被所有的的对象所共享。
- static优先于对象存在,因为static修饰的成员随着类的加载就已经存在了。
- static修饰的成员多了一种调用方式,可以直接被类名所调用。
- static修饰的数据是共享数据,对象中的存储的是特有数据。
- 1.静态:被static修饰的类的属性或者方法,内存空间不会被实例化影响(不适用于局部变量),一旦被改变,其他地方读到的值,都是改变后的值,不建议使用实例名来访问静态的属性和方法,直接使用类名访问。
- 2.尽量减少使用静态属性和方法,特别是在多线程运行环境,坚决不允许。
- 3.初始化块,无任何修饰{};每次实例化的时候就会产生。
final
- 1. final修饰的方法不可重载,重载。
- 2. final修的变量的值不可改变,也就是常量。
- 3. final修饰的类不可以被继承。
- 4. final修饰局部变量问题
-
- 修饰基本类型:基本类型的值不能发生改变。
- 修饰引用类型:引用类型的地址不能发生改变,但是,该对象的堆内存的成员变量值是可以改变的。
- final修饰的变量的初始化时:
-
- 被final修饰的变量只能赋值一次。
- 在构造方法完毕前。(非静态的常量)
成员变量和静态变量的区别?
1.两个变量的生命周期不同。
-
- 成员变量随着对象的创建而存在,随着对象的被回收而释放。
- 静态变量随着类的加载而存在,随着类的消失而消失。(生命周期长)
2.调用方式不同。
-
- 成员变量只能被对象调用。
- 静态变量可以被对象调用,还可以被类名调用。
3。别名不同:
-
- 成员变量也称为实例变量。
- 静态变量称为类变量,
4.数据位置不同:
-
- 成员变量数据存储在堆内存对象中,所以也叫做对象的特有数据。
- 静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象共享数据。
静态使用注意事项:
-
- 静态方法只能访问静态成员。
- 静态方法中不可以使用this或者super关键字。
- 主函数是静态的。
Java 修饰符
修饰符:
权限修饰符:public ,private,default,protected。
状态修饰符:static , final。
抽象修饰符:abstract。
Java语言提供了很多修饰符,主要分为以下两类:
访问控制修饰符
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的访问权限。
· 默认的,也称为 default,在同一包内可见,不使用任何修饰符。
· 私有的,以 private 修饰符指定,在同一类内可见。
· 共有的,以 public 修饰符指定,对所有类可见。(谁都可以访问)
· 受保护的,以 protected 修饰符指定,对同一包内的类和所有子类可见。(受包保护)
被Static修饰的代码块里面的变量,是共用的,可以通过外界改变他们。
非访问修饰符
为了实现一些其他的功能,Java 也提供了许多非访问修饰符。
· static 修饰符,用来创建类方法和类变量。
· Final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
· Abstract 修饰符,用来创建抽象类和抽象方法。
· Synchronized 和 volatile 修饰符,主要用于线程的编程。
类及其组成可以用的修饰符
类: 默认,public,final,abstract 我们自己定义:public居多
成员变量: 四种权限修饰符均可,final,static 我们自己定义:private居多
构造方法: 四种权限修饰符均可,其他不可 我们自己定义:public 居多
成员方法: 四种权限修饰符均可,fianl,static,abstract 我们自己定义:public居多