Java基础-static-final-super-this

static

修饰变量、方法、代码块、内部类

静态变量

用static修饰的变量称之为静态变量或者也叫类变量。静态变量是随着类的加载而加载到了方法区中的静态区,并且在静态区中自动的赋予了默认值。每一个对象实际上是引用了这个静态变量在静态区中的地址,静态变量是被所有对象所共享的。静态变量是先于对象而存在,所以静态变量可以不通过对象而通过类名来调用

System.out  System.in

静态变量可以定义在构造代码块中吗?---不可以

静态变量可以在构造代码块中初始化吗?---可以

方法区

存储类信息。存储类的基本信息的区域称之为静态常量池。存储静态属性和静态方法的地方称之为静态区。

一个类在第一次真正使用的时候才会向方法区中加载---所以类只加载一次,加载完成之后就不再从方法区中移除。

静态方法

用static修饰的方法称之为静态方法也叫类方法。静态方法是随着类的加载而加载到了方法区中的静态区,并不执行,而是在被调用的时候去栈内存中执行。静态方法也是先于对象而存在的,所以静态方法可以不通过对象而是通过类名来调用。

System.arraycopy()

Arrays.toString()

Arrays.copyOf()

Math.sqrt()

System.out.println();---out是一个静态对象

静态变量可以定义到静态方法中吗?---不可以---静态方法在静态区中只存储不执行

静态方法中可以直接调用本类中的非静态方法吗?---不可以

在主函数中可以使用this吗?---不可以

静态方法可以重载吗?---可以

Arrays.sort()

静态方法可以重写(覆盖)吗?---不可以

父子类中可以存在方法签名完全一致的静态方法吗?---可以

静态看的是声明类,非静态看的是实现类

父子类中存在了方法签名一致的方法的时候,要么两者都是静态,要么两者都是非静态

静态代码块

用static{}包括起来的代码

执行顺序:父类静态->子类静态->父类非静态->子类非静态

this关键字

注意:在Java中所有的非静态属性和非静态方法都是通过对象来调用的。

this代表当前在使用的对象---由于在类内没有实际对象的存在,所以通过this作为一个虚拟对象来调用本类中的其他方法和属性

可以通过this语句来调用本类中的其他对应形式的构造方法,this语句必须放在构造函数的首行。

super关键字

在子类中代表了父类对象的引用,用于调用父类中的方法或者属性。

在子类的构造函数中都会直接或者间接的有一个super语句---如果父类中没有提无参构造,那么子类的构造函数中必须手动添加对应形式的super语句。

final

final可以修饰数据,方法,类

final修饰某个量的时候,这个量称之为常量---定义好之后不可改变---对于基本类型,指的是值不可变;对于引用类型,指的是地址不可变,但是其中的属性值可以改变

public class A {

private final int i ;

public A(){

this(5);

}

public A(int i){

this.i = i;

}

}

final修饰方法称之为最终方法---不可被重写--但是可以被继承,可以进行重载

final修饰类称之为最终类---不可被继承---最终类中的方法无法被重写

 

猜你喜欢

转载自blog.csdn.net/weixin_42129856/article/details/81100455