美文网首页
11 static关键字

11 static关键字

作者: ca8519be679b | 来源:发表于2020-02-07 11:37 被阅读0次

我们之前定义的方法有的有static,有的没有,到底什么时候加呢

1

如上图,我们定义学生类,实例可能每个人有不同的姓名年龄学号,但是他们同班同学拥有同一个教室,如果我们给每个人都单独分配教室的空间就浪费了,static的作用是,成员变量变成类所属,而不再是实例所属,多个对象共享同一个数据

同样,static也可以修饰方法,修饰后方法变成了静态方法而非实例方法

2 3

如上2,3图,我们定义个类MyClass里面定义了静态方法,我们实例和类都可以调用,但是比较推荐的是使用类,使用实例的调用静态方法经过javac编译后也会变成类,对于本类中的调用静态方法,可以省略类名称

4

注意事项1,静态方法只能访问静态变量,不能访问非静态变量(静态先创建,非静态后创建,先人不知道后人,而后人知道先人)

5

如上,我们定义了静态方法,也定义了静态变量,我们静态方法调用非静态变量会标红,非静态方法是可以调用非静态变量和静态变量的

注意事项2,静态方法里不能使用this,因为this表示当前对象,而静态方法是针对类的

静态方法内存分析

6

在内存中,我们知道方法区,对于实例,不额外分配静态空间,而是在方法区内又开辟了静态区存储静态变量,如上图,当我们尝试使用类名或者实例访问静态属性时(实例会被编译成类),就会直接在静态区去找这个静态变量

静态代码块

格式   类内static{代码块}        效果当类第一次使用时,运行唯一的一次

7 8

当我们如上定义了MyClass,可以看到我们对静态代码块和构造方法都设置了打印,如果我们在Demo的main里没写MyClass相关,是不会打印任何东西,但是我们实例后会执行构造方法,我们这里查看哪个先运行,可以看到静态代码块先于构造方法执行

9

如上,我们又创建了实例,可以看到静态代码块只执行了一次,静态代码块在严格要求执行一次的场合很有用

相关文章

  • OC中static、const、extern关键字理解

    static关键字 static关键字用于修饰变量。 static修饰局部变量当使用static修饰局部变量时, ...

  • static关键字

    Static关键字概述 static(静态)关键字可以用于修饰变量、方法和代码块。我认为static关键字的主要用...

  • 【Java】关键字

    一、 static关键字 static关键字的总结: static关键字 可以再没有创建对象的时候进行调用类的元素...

  • 11 static关键字

    我们之前定义的方法有的有static,有的没有,到底什么时候加呢 如上图,我们定义学生类,实例可能每个人有不同的姓...

  • Java学习Day03

    今日学习内容总结 Static关键字 Arrays类 Math类 继承 Static关键字 一旦用了static,...

  • java基础-day11-static关键字

    static关键字和接口 1. static关键字【重点】 1.1 static修饰静态成员变量 1.1.1 为什...

  • C语言中的static关键字

    @TOC C语言中的static关键字 static 关键字,意为静态。 static 变量 特性:全局变量在函数...

  • Static关键字

    C语言中的static关键字和Java的static关键字意义不一样。 1 用static修饰函数 static用...

  • C基础知识

    基础问题 1.static关键字和const关键字。 static: 作用于变量时:用static声明局部变量--...

  • 13.面向对象进阶—静态关键字static

    面向对象进阶 静态关键字static static关键字的作用,修饰成员变量的用法 static是静态的意思,可以...

网友评论

      本文标题:11 static关键字

      本文链接:https://www.haomeiwen.com/subject/owtmxhtx.html