栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【私人笔记】Java的static关键字详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【私人笔记】Java的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)其他作用

修饰代码块,即静态代码块。执行顺序为:
静态代码块>构造代码块>构造方法
该代码块仅在第一次使用类对象时调用(就是类加载时),而且只会调用这一次!
演示:


为了防止有同学认为这是顺序问题,我特点打乱了顺序。

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

那么这就是本篇笔记的全部内容了!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887877.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号