Java 学习笔记4 关键字总结

final,static,this,super关键字总结

final关键字

final关键字,意思是最终的、不可修改的,用来修饰类、方法和变量,具有以下特点:

1、final修饰的类不能被继承,final类中的所有成员方法都会被隐式的指定为final方法;
2、final修饰的方法不能被重写;
3、final修饰的变量是常量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能让其指向另一个对象。

static关键字

static关键字主要是有以下四种使用场景:

1、修饰成员变量和成员方法:被static修饰的成员属于类,不属于单个对象,被类中所有对象共享。静态变量存放在Java内存区域的方法区。
2、静态代码块:静态代码块定义在类中方法外,静态代码块在非静态代码块之前执行(静态代码块——>非静态代码块——>构造方法)。该类不管创建多少对象,静态代码块只执行一次。


3、静态内部类(注意:static修饰类的话,只能修饰内部类):静态内部类与非静态内部类之间存在一个最大的区别:非静态内部类在编译完成后会隐含保存着一个引用,该引用时指向创建它的外围类,但是静态内部类却没有。

4、静态导包(用来导入类中的静态资源,1.5之后的新特性):格式为:import static 这两个2关键字连用可以指定导入某个类中的指定静态资源,并且不需要使用类名调用类中静态方法。可以直接使用类中静态成员变量和成员方法。

this关键字

this关键字用于引用类的当前实例

super关键字

super关键字用于从子类访问父类的变量和方法。例如:

public class Super {
    protected int number;

    protected showNumber() {
        System.out.println("number = " + number);
    }
}

public class Sub extends Super {
    void bar() {
        super.number = 10;
        super.showNumber();
    }
}

在上方的例子中,Sub类访问父类成员变量number并调用其父类super的showNumber()方法。

使用this和super要注意的问题:

在构造器中使用super()调用父类中的其他狗仔方法时,该语句必须处于构造器的首行,否则编译器会报错。另外,this调用本类中其他的构造方法是,也要放在首行。
this,super不能用在static方法中。

简单解释一下:

被static修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享。而this代表对本列对象的引用,指向本类对象;而super代表对父类对象的引用,指向父类对象;所以,this和super是属于对象范畴的东西,而静态方法是属于类范畴的东西。

静态代码块

静态代码块定义在类中方法外,静态代码块在非静态代码块之前执行(静态代码块——>非静态代码块——>构造方法)。该类不管创建多少对象,静态代码块也只执行一次

静态代码块的格式是

static {
语句体;
}

一个类中的静态代码块可以有多个,位置可以随便放,它不在任何方法体内,JVM加载类时会执行这些静态的代码块,如果静态代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。

静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问;

 static{}静态代码块与{}非静态代码块(构造代码块)

相同点:都是在JVM加载类时且在构造函数执行之前执行,在类中都可以定义多个,定义多个时俺定义的顺序执行,一般在代码块中对一些static变量进行赋值。

不同点:静态代码块在非静态代码块之前执行(静态代码块——>非静态代码块——>构造方法)。静态代码块·1只在第一次new执行一次,之后不再执行,而非静态代码块在每new一次就执行一次。非静态代码块可在普通方法中定义(不过用处不大);而静态代码块不行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值