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修饰类称之为最终类---不可被继承---最终类中的方法无法被重写
---------------------
作者:下课铃声
来源:CSDN
原文:https://blog.csdn.net/weixin_42129856/article/details/81100455
版权声明:本文为博主原创文章,转载请附上博文链接!