Static关键字到底是干什么的

首先知道Static是一种修饰符,被Static修饰的变量和方法分别叫做静态成员和静态方法。
一旦使用了static关键字,那么这样的内容不再属于对象,而是属于整个类,凡是类的对象都包含这个共同的特性。
举个例子说,定义一个学生类,这些学生属于一个班级,每一个学生对象包含 姓名、学号、年龄、班级、那么多个学生就要写多个这些成员,这样就比较浪费内存,如果把他们共有的,也就是班级变量 用static关键字修饰,那么所有的对象就共有一个班级信息。

Static对于成员变量和成员方法的不同用途

成员变量

如果一个变量用static修饰那么此变量就是共有的,多个对象共用一份数据

成员方法

1.static修饰的属于静态方法,静态方法不属于对象,属于类
2.如果没有static关键字,那么需要先创建对象,通过对象的属性使用
3.使用静态方法正确方式:【 类名称.静态方法名】在同一个类下可以省略类名称
注意事项
静态不能够直接访问非静态

原因:在内存中,有的是静态内容,有的非静态内容,按照先后顺序非静态后生成,所以不能进行访问

在这里插入图片描述

public class MyMethod {
    int num;
    static  int aaa;
    public void method(){
        System.out.println("普通成员方法");
        //非静态可以访问非静态
        System.out.println(num);
        //非静态可以访问静态
        System.out.println(aaa);
    }

    public static void staticMethod() {
        System.out.println("静态方法");
        //静态可以访问静态
        System.out.println(aaa);
        //静态不可以访问非静态
        //System.out.println(num);    这样写是不对的所以注释掉了
    }
}

静态方法中不能有this

原因:this代表当前对象,通过谁调用,谁就是当前对象(this),而静态方法和对象没有关系,不需要通过对象来调用,也就不存在this方法

static方法内存图

在这里插入图片描述

静态代码块
  • 静态代码块格式:
  • public stasic 类名称{
  • static{
  • //静态代码块内容
    
  • }
  • }
  • 特点:当第一次用到本类时,代码块执行唯一的一次
  • 静态代码块的典型用途
  • 用来一次性的对静态代码块的执行

另外 由于static修饰的内容属于类,不属于对象,所以在调用的时候推荐采用类名称.静态方法名的方式 ,虽然用new出来的对象也可以调用,但是会在编译之后被javac翻译为“类名称.静态方法名”的形式,为了避免不必要的错误,建议不要使用这种方式调用静态方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值