Java开发——14.static和fianl关键字

static关键字:

它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。也就是说,被static修饰的成员变量可以通过类名.成员变量名直接调用,而不用创建对象在调用变量了

static应用场景:

static 变量          静态变量
static 方法          静态方法
static {代码块}        静态代码块

静态变量:

//static定义格式以及特点

static的特点:(它可以修饰成员变量,还可以修饰成员方法)
    A:随着类的加载而加载
      回想main方法,但是被static修饰的内容会存储到一块固定的内容区域即,方法区中的静态区。
    B:优先于对象存在
    C:被类的所有对象共享
      如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。
      举例:
        饮水机(用静态修饰)
        水杯(不能用静态修饰)
    D:可以通过类名调用
      其实它本身也可以通过对象名调用。
      推荐使用类名调用。

静态修饰的内容一般我们称其为:与类相关的,类成员,可以直接使用类名进行访问。

静态方法:

static关键字注意事项
    A:在静态方法中是没有this关键字的
      如何理解呢?
        静态是随着类的加载而加载,this是随着对象的创建而存在。
        静态比对象先存在。
    B:静态方法只能访问静态的成员变量和静态的成员方法
        静态方法:
          成员变量:只能被方法访问
          成员方法:只能访问静态成员方法
        非静态方法:
          成员变量:可以被静态方法访问,也可以被非静态方法访问
          成员方法:可以访问静态的成员方法,也可以是非静态的成员方法。
     简单记:
        静态只能访问静态。非静态可以访问静态也可以访问非静态
​

static注意事项:

1.静态方法可以直接访问类变量和静态方法。
2.静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
3.静态方法中,不能使用this关键字。
4.静态只能访问静态。非静态可以访问静态也可以访问非静态!!!

静态代码块:

1.定义在成员位置,使用static修饰的代码块{}。
2.定义在类中,方法外!
3.随着类的加载而执行并且只会执行一次,优先于main方法和构造方法执行。

静态代码块的声明格式:

public class ClassName{ 
    static {
        // 执行语句 
    }
}

static代码演示:

public class Demo {static {
        int age = 26;
        String name = "小红";System.out.println(age+name);
    }public static void main(String[] args) {Test te = new Test();
        Test te2 = new Test();
        Test te3 = new Test();}}

/*
  这里声明了三个对象,但是只执行了一次static代码块里面的内容
*/

fianl关键字:

学习了继承后,我们知道,子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种随意改写的情况,Java提供了final关键字,用于修饰不可改变内容。

final的特点:

被final关键字修饰的内容不可改变,final可以用来修饰类、方法以及变量。

类:被修饰的类,不能被继承。
方法:被修饰的方法,不能被重写。
变量:被修饰的变量,不能被重新赋值,变成了常量

//final修饰类
public final class 类名 {
   方法(){}
}
//注意:被final修饰的类不能被继承
//final修饰方法
public class 类名 {
   final 方法(){}
}
//注意:被final修饰的方法不能被继承
//final修饰变量
public class 类名 {
   final 变量类型 变量名;
   final 方法(){}
}
//注意:被final修饰的变量,是常量,不能重新赋值

此处,先引申进来一个关键字finally,后期会在异常中遇到,此处先打个照面​!finally是用在异常处理中的,用在try{ }catch(异常对象 对象名){}finally{}中,表示在finally中代码无论程序是否运行正确都会执行​!此处仅​知道有这个关键字即可,在异常中会讲解​。

try{ 
  可能存在异常的代码;
}catch(异常对象 对象名){
  异常返回值;
}finally{
  自定义内容;
}

欢迎关注微信公众号:小红的成长日记,一起学Java。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值