静态变量和静态方法

  1. 修饰变量,变量叫静态变量,表示变量是类变量,不是实例变量,所有实例共享这一个变量。
  2. 修饰方法,方法叫静态方法,表示方法是类方法,不是实例方法,可以用类名.方法名直接调用,也可以实例化一个对象来调用。

  静态方法和静态变量都是类的静态资源,是类实例之间共享的。静态资源是类初始化的时候加载的,而非静态资源是实例初始化也就是new一个对象的时候加载的。所以:

  1. 静态方法不能引用非静态资源,因为静态方法调用时非静态资源有可能还没加载。
  2. 静态方法可以引用其它静态资源。
  3. 非静态方法可以引用静态资源,因为非静态资源调用时静态资源已经加载好了。

静态块

  静态块和静态变量/静态方法一样,也是在类初始化的时候执行,且只执行一次。静态块有三个需要注意的地方:

  1. 静态资源的加载顺序是严格按照静态资源的定义顺序来加载的。
  2. 静态代码块对定义在它之后的变量,只能赋值,不能访问。
  3. 在有继承关系的父子类中,静态代码块执行顺序是父类静态代码块先,子类静态代码块后,且只执行一次。

示例1:

package com.basic;public class StaticBlockTest {public static int a = test();static {System.out.println("second");}static {System.out.println("first");}static int test() {System.out.println("third");return 1;}public static void main(String[] args) {StaticBlockTest test = new StaticBlockTest();}
}

结果:

third
second
first

示例2:

package com.basic;public class StaticBlockTest {static int a = test();static {System.out.println("second");}static {System.out.println(b);}static int test() {System.out.println("third");return 1;}static int b = 4;public static void main(String[] args) {StaticBlockTest test = new StaticBlockTest();}
}

编译器报错:“Cannot reference a field before it is defined“

示例3:

package com.basic;public class StaticBlockTest extends Father{static int a = test();static {System.out.println("second");}static {
//        System.out.println(b);System.out.println("first");}static int test() {System.out.println("third");return 1;}static int b = 4;public void print() {System.out.println("Child");}public static void main(String[] args) {StaticBlockTest test = new StaticBlockTest();test.print();}
}class Father {static {System.out.println("Father");}public void print() {System.out.println("Father");}
}

结果:

Father
third
second
first
Child

静态内部类

import static

可以指定倒入某个类中的指定静态资源,并且不需要使用类名.资源名,可以直接使用资源名。

package com.basic;import static com.imooc.demo2.StringBuilderDemo.IMPORT_STATIC;
public class ImportStaticTest {public static void main(String[] args) {// TODO Auto-generated method stub
System.out.println(IMPORT_STATIC);}}

结果:

import static key word

转载于:https://www.cnblogs.com/IvySue/p/7488038.html

static关键字(pass)相关推荐

  1. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  2. Java 静态变量,静态方法,静态常量(java static 关键字)

    Java 静态变量,静态方法,静态常量  就是变量 ,方法,常量前面添加了static 关键字 为什么要使用静态的呢 有时候在处理问题时会需要两个类在同一个内存区域共享一个数据, 不如现在 Main ...

  3. static关键字用法

    static关键字 1.修饰成员变量 在我们平时的使用当中,static最常用的功能就是修饰类的属性和方法,让他们成为类的成员属性和方法,我们通常将用static修饰的成员称为类成员或者静态成员,这句 ...

  4. Java中的static关键字的用法

    1.静态方法 static:通常在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: (1)它们仅能调用其他的static方法. (2 ...

  5. java的static关键字

    java的static关键字 静态变量和静态方法 static关键字最基本的用法是: 1.被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来 2.被static ...

  6. 面试季,Java中的static关键字解析

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面 ...

  7. c++语言static作用,详解c++中的 static 关键字及作用

    注:若没有特指是 静态成员时,默认都是普通成员: 1 类中的普通成员 类中的成员变量 和 成员函数 是分开存储的.其中, 1)每个对象都有独立的成员变量:成员变量可以存储在 栈空间.堆空间.全局数据区 ...

  8. static关键字了解解析

    什么是static关键字 static关键字我们经常接触,不过我们一直没有讨论过它到底是什么,有什么具体的作用,那static关键字是什么呢,有啥用呢? static是静态的意思,是一个修饰符,就像是 ...

  9. Java中的static关键字详解

    ** Java中的static关键字详解 ** 在一个类中定义一个方法为static,即静态的,那就是说无需本类的对象就可以调用此方法.调用一个静态方法就是 "类名.方法名" ,静 ...

  10. C++中的static关键字的总结

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的st ...

最新文章

  1. ELK 5.x日志分析 (二) Elasticserach 5.2 安装
  2. Oracle维护常用SQL语句
  3. 互联网协议 — HTTP/3 超文本传输协议第 3 版
  4. datanode 不能连接master
  5. php根据不同的条件替换一段html代码中的不同的img标签
  6. Python的map方法的应用
  7. Java监听器完整入门实例
  8. Ubuntu使用jupyter notebook +导出PDF
  9. python应声虫代码_前端大牛们都学过哪些东西?
  10. 0505.Net基础班第十三天(面向对象多态)
  11. 问题解决:下载的网页打开后自动跳转到首页
  12. MySQL入门系列:查询简介(二)
  13. 【实验】实验课总结1 绘制简单电路图
  14. 杀毒奇招:用安全网关消灭蠕虫病毒(转)
  15. c语言统计字母字符数字字符个数,C语言统计字符个数代码分享
  16. Hive系列 (一):Hive搭建
  17. 计算机系智能科学与技术专业考研,什么是智能科学与技术考研?有哪些考研方向?...
  18. OpenCV调用TensorFlow是什么意思
  19. 使用AnyChat实现基本视频聊天的步骤
  20. 【前端冷知识】你还在用charCodeAt那你就out了

热门文章

  1. javascript 弹出层(警告框)的制作(css元素居中、javascript元素居中)
  2. 一、Oracle学习笔记:认识数据库
  3. RedisTemplate 常用方法、序列化方式、基于 Redis 实现分布式锁
  4. matlab中phi什么意思,球面座標matlab中Theta和Phi角的範圍?
  5. mysql自动去重_关于mysql自联去重的一些记录
  6. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-4.动态Sql语句Mybaties SqlProvider...
  7. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_12_练习_文件复制...
  8. Atcoder Grand Contest 036 D - Negative Cycle
  9. webstorm如何支持markdown
  10. CF125E MST Company