static关键字

为什么需要学习static关键字?

针对某一个变量属于类而不属于某一个具体的对象的时候,我们可以考虑使用static关键字

static概述: 多个对象共享同一份数据

static的特点:

static修饰变量又称为共享变量,类变量,静态变量

静态成员属于某一类的,而不属于某一个具体的对象

3.访问静态成员的方式:

a.通过对象访问 不建议

b.通过类名访问

c.通过读写方法访问

4.静态static关键字可以修饰变量,还能够修饰方法,同时还可以修饰代码块(后面讲)

5.static修饰的方法称为类方法,方法体内部称为静态环境/静态上下文

a.非静态环境可以访问静态变量

b.静态环境下只能够访问静态变量

c.静态环境下不能够出现this,super

6.静态修饰方法的意义? -- 简化代码

a.静态方法用来访问静态成员

b.编写工具类

1.构造方法私有

2.成员方法添加static关键字修饰

例子:

Arrays 工具类 Math 工具类

7.static还可以修饰类,但是必须是内部类(后面讲解)

8.static的内存图

static是共享的,不变的,放在方法区,静态代码块在类加载的时候就会执行,并且只执行一次

代码块

1.局部代码块: 定义在局部位置,限定局部变量的作用域

2.构造代码块: 定义在成员位置,抽取多个构造代码块的重复代码,从而简化代码,在每次构造方法之前执行,并且可以执行多次

3.静态代码块: 定义在成员位置

a.在类加载的时候执行,只能够执行一次

b.目前理解为在类第一次出现的时候加载或者类的成员被访问的时候加载

静态代码块作用:

a.初始化静态成员

b.资源文件的读写,以及配置文件的读写,以及连接资源的载入等等

例子:

数据库连接

读取配置文件

4.同步代码块: 定义在局部位置 (在讲解多线程的时候讲解)

面试题: 静态变量和非静态变量的区别?

构造方法、构造代码块、静态代码块的执行顺序?

静态代码块 > 构造代码块 > 构造方法

静态代码块在类加载的时候执行只执行一次

构造代码块在每次访问构造方法之前执行,可以执行多次

构造方法每次创建对象的时候执行,可以执行多次

public class StaticDemo02 {

public static void main(String[] args) {

CodeBlock2.z = 100;

CodeBlock2 cb = new CodeBlock2();

CodeBlock2 cb2 = new CodeBlock2(1, 2);

}

}

class CodeBlock2 {

int x;

int y;

static int z;

{

//System.out.println("CodeBlock 构造代码块");

print();

}

public CodeBlock2() {

//print();

System.out.println("我是无参构造方法");

}

static {

System.out.println("我是静态代码块");

z = 100;

}

public CodeBlock2(int x, int y) {

//print();

this.x = x;

this.y = y;

System.out.println("我是带参构造方法");

}

public void print() {

System.out.format("(%d,%d)%n", x, y);

}

public void method() {

int num = 10;

// 局部代码块

{

int a = 20;

System.out.println(num);

System.out.println(a);

}

int a = 30;

// 同步代码块

synchronized(new Object()){

}

}

}

我是静态代码块

(0,0)

我是无参构造方法

(0,0)

我是带参构造方法

java 静态代码块 作用域_java static关键字和代码块相关推荐

  1. static关键字与代码块

    文章目录 static关键字与代码块 一.static关键字 1.静态属性 2.静态方法 二.代码块 1.普通代码块 2.构造代码块 3.静态代码块 static关键字与代码块 一.static关键字 ...

  2. java中的静态变量的作用域_Java基础学习03-变量、常量、作用域

    在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...] ; Java语言支 ...

  3. java的静态变量怎么赋值_java static变量可以赋值吗?

    java static变量可以赋值吗? 可以赋值的.static的主要作用是静态成员,指该变量的实例在内存中之存放一次.赋值是可以随便改的. java中static关键字 static是java中非常 ...

  4. java static 块作用_java static块有什么具体的作用和注意事项?说具体点

    展开全部 在Java语言中,static表示"全局"或者"静态"的62616964757a686964616fe4b893e5b19e3133333035346 ...

  5. 面向对象基础——static关键字和代码块的使用

    具体内容  在Java中可以使用static声明属性和方法,因为之前多部分属性和方法都属于非static的,这样一来,每个对象都占有自己的内容,如果现在希望一个属性被所有的对象所共同拥有,则可以将其声 ...

  6. static关键字_乐字节Java|this关键字、static关键字、block块

    大家好,乐字节的小乐将会给大家讲述Java继承的内容,一下是Java继承的知识图谱: 一. this关键字 在类的方法定义中使用的this关键字代表使用该方法的对象的引用. this 即"自 ...

  7. java 静态变量的使用_java的static静态变量是不是不安全的?应该如何正确的使用他呢...

    类中的静态变量在程序运行期间,其内存空间对所有该类的对象实例而言是共享的,为了节省系统内存开销.共享资源,应该将一些变量声明为静态变量. 代码一: public class MemoryTest { ...

  8. java 静态传值到构造器_java 静态初始化块,初始化块,构造器执行顺序

    public class Test1 { static{ System.out.println("执行静态初始化块test1..."); } { System.out.printl ...

  9. java monitor是什么意思_Java synchronized关键字和monitor

    最近在看Java并发相关的东西,然后再看文档的时候经常看到monitor这个词,例如Object.wait的文档里有这么一句: The current thread must own this obj ...

最新文章

  1. 自主云服务器处理器_云服务器哪家的CPU最便宜且好用
  2. android miui9.0改装条例,安卓的通知适配(更新至9.0)
  3. php开启curl和openssl
  4. RocketMQ集群知识介绍
  5. python怎样将list转化成字典_在python 中如何将 list 转化成 dictionary
  6. 相机标定中标定棋盘的角点是哪个?
  7. 旋转炫酷相册-快制作你喜欢源码
  8. httppostedfilebase.saveas后文件被占用_文件过多时ls命令为什么会卡住?
  9. reset.css 和 flexible.js
  10. Oracle分析函数、多维函数和Model函数简要说明,主要针对BI报表统计
  11. 基于区块链技术的数据安全共享网络体系研究_基于区块链技术的用户信息隐私保护与共享方案...
  12. android httppost
  13. 桌面支持--outlook会议邀请(选择可选参加的领导)
  14. php 关闭call stack,Thinkphp Call Stack,PHP调用栈Call Stack的获取
  15. 阿甘正传中的人生哲理
  16. 单片机2017福建省中职省赛_我院学子在2017年福建省合泰杯单片机应用设计竞赛中再获佳绩...
  17. 专门为某种用途设计的计算机称为,专门为某种用途而设计的计算机,称为( )计算机。...
  18. python爬虫post请求翻页_python爬虫如何POST request payload形式的请求
  19. 想要学计算机最好是哪所大学,盘点丨计算机专业最好的7所大学
  20. 计算机系统结构复习(四):Pipelining流水线

热门文章

  1. c语言优先级大全,C语言运算符及其优先级汇总表口诀
  2. LeetCode-114: 二叉树展开为链表
  3. 图解算法系列笔记(三)
  4. JAVA 创建学生类
  5. java swing 实现下拉列表点击事件
  6. java 当前时间小时数,java获取当前时间前几个小时的时间
  7. mysql slave修改_MySql主从复制(初学笔记)
  8. linux判断值相等_Shell字符串比较相等、不相等方法小结【转】
  9. java log4j记录_JAVA中使用LOG4J记录日志
  10. android资源管理方式,Android资源管理利器Resources和AssetManager