Java的static修饰符
来源:互联网 发布:wps office mac 编辑:程序博客网 时间:2024/05/22 03:52
1.引出static
在生活中有些东西不是属于某一个具体对象的,而是属于整个事物的类型,比如:全世界人的总数,人的毁灭的行为.毁灭的行为,应该属于人类,而不属于某一个人.
状态和行为应该有对象和类型之分.
有的状态和行为应该属于对象,不同的对象,状态和行为可以不一样.
有的状态和行为应该属于类,不属于对象.
问题:现在如何表示人类毁灭这个行为(destory).
要解决该问题,得学习static修饰符.
static修饰符表示静态的,可修饰字段、方法、内部类,其修饰的成员属于类,也就是说static修饰的资源属于类级别,而不是对象级别。
static的真正作用:用来区别字段,方法,内部类,初始化代码块是属于对象还是属于类本身。
2.static修饰符的特点
1):static修饰的成员(字段/方法),随着所在类的加载而加载.
当JVM把字节码加载进JVM的时候,static修饰的成员已经在内存中存在了.
2):优先于对象的存在.
对象是我们手动通过new关键字创建出来的.
3:satic修饰的成员被该类型的所有对象所共享.
根据该类创建出来的任何对象,都可以访问static成员.(狗天生就吃屎.)
剧透:表面上通过对象去访问static成员,其本质依然使用类名访问,和对象没有任何关系(通过反编译看到的).
4):直接使用类名访问static成员
因为static修饰的成员直接属于类,不属于对象,所以可以直接使用类名访问static成员.
当JVM把字节码加载进JVM的时候,static修饰的成员已经在内存中存在了.
2):优先于对象的存在.
对象是我们手动通过new关键字创建出来的.
3:satic修饰的成员被该类型的所有对象所共享.
根据该类创建出来的任何对象,都可以访问static成员.(狗天生就吃屎.)
剧透:表面上通过对象去访问static成员,其本质依然使用类名访问,和对象没有任何关系(通过反编译看到的).
4):直接使用类名访问static成员
因为static修饰的成员直接属于类,不属于对象,所以可以直接使用类名访问static成员.
3.类成员和实例成员的访问
类中的成员:字段,方法,内部类.
类成员: 使用static修饰的成员.
实例成员: 没有使用static修饰的成员.
----------------------------------------------------------------------------
类成员只能访问类成员,实例成员只能访问实例成员.
----------------------------------------------------------------------------
类成员,直接属于类, 可以通过类来访问static字段和static方法.
实例成员,只属于对象, 通过对象来访问非static字段和非static方法.
(对象其实可以访问类成员,但是底层依然使用类名访问的.)
---------------------------------------------------------------------------------------------
在static方法中,只能调用static成员.
非static方法,可以访问静态成员,也可以访问实例成员.
类成员: 使用static修饰的成员.
实例成员: 没有使用static修饰的成员.
----------------------------------------------------------------------------
类成员只能访问类成员,实例成员只能访问实例成员.
----------------------------------------------------------------------------
类成员,直接属于类, 可以通过类来访问static字段和static方法.
实例成员,只属于对象, 通过对象来访问非static字段和非static方法.
(对象其实可以访问类成员,但是底层依然使用类名访问的.)
---------------------------------------------------------------------------------------------
在static方法中,只能调用static成员.
非static方法,可以访问静态成员,也可以访问实例成员.
4.什么时候定义成static的字段和方法
如果一个状态/行为属于整个事物(类),就直接使用static修饰.被所有对象所共享.
---------------------------------------------------------
在开发中,往往把工具方法使用static修饰.如果不使用static修饰,则这些方法属于该类的对象,我们得先创建对象再调用方法,在开发中工具对象只需要一份即可,可能创建N个对象,此时我们往往把该类设计为单例的.,但是还是有点麻烦.所以,一般的,在开发中设计工具方法,为了调用简单,我们使用static修饰.
--------------------------------------------
类成员的使用
利处:对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象中都存储一份,可以直接被类名调用。
弊端:生命周期过长。
---------------------------------------------------------
在开发中,往往把工具方法使用static修饰.如果不使用static修饰,则这些方法属于该类的对象,我们得先创建对象再调用方法,在开发中工具对象只需要一份即可,可能创建N个对象,此时我们往往把该类设计为单例的.,但是还是有点麻烦.所以,一般的,在开发中设计工具方法,为了调用简单,我们使用static修饰.
--------------------------------------------
类成员的使用
利处:对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象中都存储一份,可以直接被类名调用。
弊端:生命周期过长。
例子
class StaticDemo {static int num = 10; //静态成员变量static void sum(){ //静态方法System.out.println("这是静态方法");}public static void main(String[] args) {System.out.println(StaticDemo.num); //直接使用类名调用静态成员变量StaticDemo.sum(); //直接使用类名调用静态方法}}运行结果
阅读全文
0 0
- java的static修饰符
- Java的static修饰符
- [JAVA] 修饰符 static
- java static修饰符
- java static 修饰符
- Java static 修饰符的用法
- java static修饰符的问题
- 详解java的static修饰符
- java static修饰符的使用
- [Java] 修饰符 static 的作用
- JAVA中static修饰符的作用
- Java中static修饰符的作用
- java修饰符(static关键字)
- java修饰符:static关键字
- Java中static修饰符
- java之static修饰符
- java中的Static修饰符
- Java修饰符static详解
- ajax跨域请求问题中xhr2的解决方案
- BZOJ 1070 [SCOI 2007]修车
- java ee项目的小结
- Git .gitignore文件忽略(自己做过测试了)
- Java创建线程的三种方式及其对比
- Java的static修饰符
- 用Pandas画图遇到的问题(plot、pivot、unstack)
- wget 下载整个网站,或者特定目录
- windows后台运行redis
- Linux学习第六篇--Linux的权限
- PCL VIEWER
- Anko 我遇到的坑 (应该会持续更新,PS:给自己定个小目标,然后坐等打脸)
- 教你 Debug 的正确姿势——记一次 CoreMotion 的 Crash
- 浅析Java Object Serialization与 Hadoop 序列化