愤怒的小鸟大战static【第一关:Java的static关键字详解】

俗话说,知己知彼才能百战不殆!再进攻static之前我们必须要好好了解了解它。

static的作用

可修饰属性,方法和类,接下来是具体使用

(1)修饰一个成员变量

1.被static修饰的成员变量,又叫类变量,不在依赖于对象,可直接通过类.变量名的方式调用,也可以对象.变量名调用(哪怕对象引用为null也可以正常调用)
在这里插入图片描述
那么还有哪些变化呢?
2.声明周期的改变:如果成员变量未被static修饰,那么他的生命周期是随对象的创建而创建,与对象共存亡。而被static修饰后,他的生命周期与类息息相关,也就是从类加载到程序结束。

*小拓展:什么是类加载?*
answer:简单理解:java类加载 是因为在运行时当它需要引用某个类的时候,
会先去加载这个类,就是去读取这个class文件到内存里面来,
但还没有创建这个类的实例。

3.对于这个成员变量的内存从原来的堆上变为了静态方法区(这个看看就好)

特点:所有对象共享,可以把共同的属性只存一份

举例:井水问题,一个村里有一口公共井,每个村民家里都有一个私人井,
那么所有的村民对象都可以使用这口井,这就是所有对象共享。

强化记忆:(回答下面问题)

请回答输出的值:
public class demoStatic {
    public static void main(String[] args) {
        Demo tmp1=new Demo();
        tmp1.num--;
        Demo tmp2=null;
        tmp1.num++;
        Demo.num++;
        System.out.println(Demo.num);
    }
}

class Demo{
    public static int num=10;
}
建议上机测试哦!

(2)修饰一个成员方法

被static修饰的方法,又称为类方法,和类变量依然,不依赖对象,而依赖类。
那么他和普通的方法有什么区别呢?
首先,静态方法中不能调用非static修饰的方法和成员变量,也不能使用this关键字,更不能使用构造方法,就像这样:
在这里插入图片描述

那么原因也很简单:就是静态方法他不依赖对象,而普通成员变量,成员方法是依赖对象的,this关键字和构造方法也是如此。没有对象可以使用静态方法,静态变量,而普通的用不了,所以静态方法中就不能使用了。
2.第二点就是在多态中的利用了,被static修饰的方法重写的效果与普通成员方法重写效果不同:
在这里插入图片描述
结果:
在这里插入图片描述
如果删除static关键字使其变为普通方法,结果就变为了:
在这里插入图片描述
这点呢,知道就ok了,想要了解可以去查查相关资料哦。

(3)修饰一个类

这个主要是修饰内部类,也就是静态内部类。这个在我接下来的内部类笔记会说到。

(4)其他作用

修饰代码块,即静态代码块。执行顺序为:
静态代码块>构造代码块>构造方法
该代码块仅在第一次使用类对象时调用(就是类加载时),而且只会调用这一次!
演示:
在这里插入图片描述
在这里插入图片描述
为了防止有同学认为这是顺序问题,我特点打乱了顺序。

作用:可作项目开发中初始化数据使用。

那么这就是本篇战略的全部内容了!!!
在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值