Java面向对象前言

—— static关键字详解

一、      Static关键字的概念

static为“全局”或者“静态”的意思,用来修饰成员变量(类的属性)和成员方法(类的方法),也可以用来修饰代码块。但是在java中没有全局变量的概念,所以在java中static翻译为静态

二、      使用static修饰的特点

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。

当声明多个同一类型的对象时(由同一个类创建的不同对象),并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量,所以说在类中使用static修饰的成员(属性和方法)都是所有对象共享的,也是唯一的。

三、      动态加载和静态加载简介

程序绑定的概念

绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来

动态绑定和静态绑定

静态绑定

在程序执行前方法已经被绑定(也就是说在编译过程中就已经知道这个方法到底是哪个类中的方法),此时由编译器或其它连接程序实现。

动态绑定

1.在运行时根据具体对象的类型进行绑定

2. 动态绑定的过程

a) 虚拟机提取对象的实际类型的方法表;

b)  虚拟机搜索方法签名;

c)  调用方法。

四、      Static关键字使用详解

a)      作为修饰符, static可以用来修饰变量、方法、代码块(但绝对不能修饰类)。

修饰变量:

类的所有对象共同拥有的一个属性,也称为类变量。这类似于C语言中的全局变量。类变量在类加载的时候初始化,而且只被初始化一次。在程序中任何对象对静态变量做修改,其他对象看到的是修改后的值。因此类变量可以用作计数器。另外,Java Static变量可以用类名直接访问,而不必需要对象。

修饰方法:

类的所有对象共同拥有的一个功能,称为静态方法。静态方法也可以用类名直接访问,而不必需要对象。所以在静态方法里不能直接访问非静态变量和非静态方法,在Static方法里不能出现this或者super等关键字。

修饰Java代码块:

用static去修饰类里面的一个独立的代码块,称为静态代码块。静态代码块在类第一次被加载的时候执行,而且只执行一次。静态代码块没有名字,因此不能显式调用,而只有在类加载的时候由虚拟机来调用。它主要用来完成一些初始化操作。

五、    Static在使用时的限制

a)      它们仅能调用其他的static 方法。

b)     它们只能访问static数据。

c)      它们不能以任何方式引用this 或super。

六、    总结

a)      static成员是不能被其所在class创建的实例访问的。

b)     如果不加static修饰的成员是对象成员,也就是归每个对象所有的。

c)      加static修饰的成员是类成员,就是可以由一个类直接调用,为所有对象共有的。

【职坐标】java面向对象前言——static关键字相关推荐

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

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

  2. 从内存分配角度分析c和java里的static 关键字.

    即使作为Java的初学者, 对this 和 static 这两个关键字都不会陌生. 其实也不难理解: this 关键字:  指的是对象的本身(注意不是类本身)  跟.net 语言的Me 关键字类似. ...

  3. Java 面向对象:static的理解

    Java 面向对象:static的理解以及各个代码块的运行顺序 一.static关键字 static修饰方法--称为静态方法,可以直接通过类名调用 static修饰变量--称为静态变量,能被类中所有实 ...

  4. Java 面向对象:super关键字的理解

    Java 面向对象:super关键字的理解 一.Super关键字: 1. super调用父类的构造方法,必须在构造方法的第一个 2. super只能出现在子类的方法或构造方法中! 3. super和t ...

  5. Java中的static关键字详解

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

  6. java static关键字_好程序员Java教程分享static关键字的理解

    好程序员Java教程分享static关键字的理解,static关键字含义可以理解为静态的. 1. 当其修饰属性时,该属性为整个类公有,所有的对象操作的都是同一个静态属性.所以调用时应该使用类名去调用, ...

  7. Java中的static关键字解析 转载

    原文链接:http://www.cnblogs.com/dolphin0520/p/3799052.html Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到 ...

  8. Java基础之static关键字的用法

    Java中的static关键字主要用于内存管理.我们可以应用static关键字在变量.方法.块和嵌套类中. static关键字属于类,而不是类的实例.         静态(static)可以是: 变 ...

  9. [转] Java中的static关键字解析

    Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...

最新文章

  1. 谷粒商城学习笔记——第一期:项目简介
  2. MongoDB for C#基础入门
  3. mysql三范式和反三范式_数据库三范式和反三范式
  4. tensorflow_yolov3 神经网络训练时train_loss和test_loss出现NaN(not a number)的原因和解决方法
  5. 《九章算术》中更相减损术----求最大公约数
  6. 流浪地球票房43亿元 今起电影最低票价降10元
  7. [转]挺不错的辞职申请[“模板“]
  8. 利用DHT网络原理制作bt采集蜘蛛,开源版
  9. 5G核心网-Identifiers身份标识
  10. 程序员的8个职业发展方向,了解一下!
  11. 视频教程-从入门到精通学全套AI 轻松掌握illustrator基础加实战技能视频课程-Illustrator
  12. python之dlib使用摄像头实时检测人脸
  13. 手把手教会你如何玩转SpringMVC
  14. 【中秋快乐】是什么让友小盟选择在中秋节加班?
  15. 电脑网页游戏打不开?
  16. 软件测评师--第19小时 数据测试
  17. magic mouse调整速度
  18. 计算机网络学习1:packet tracer的简单路由设置(学习记录)
  19. Redis学习笔记2
  20. 服务器里面为什么有的信号好低,为什么同一个地方手机信号却不同?带你揭开手机信号的神秘面纱...

热门文章

  1. Lobatto quadrature
  2. android 快传 源码_app源码之-仿茄子快传源码,Android项目源码类似茄子快传的快传项目包括服务端...
  3. 当不知轴承型号时如何寻找轴承故障频率_不锈钢轴承温度和振动的检查及降温方法...
  4. php 定时任务,内存溢出
  5. 一点通票据打印系统 v3.5 专业版 bt
  6. WiFi身份验证出现问题该如何解决?——时讯无线
  7. 物理dataguard 正常切换 脚色转换
  8. 企管软件PK“英克IS3”完胜 妙“技”有几多?(二)
  9. 对角占优阵的行列式大于零的证明
  10. JavaScript-0811