Java static关键字
来源:互联网 发布:linux 新建文件夹命令 编辑:程序博客网 时间:2024/05/16 01:27
为什么需要static
创建对象时,只有执行了new之后。数据的存储空间才被分配,对象的属性和方法才能被外界调用。
那么,如果以下情况
- 不创建对象,也可以调用此方法
- 为某特定域只分配单一存储空间,而不考虑对象需要被创建多少次
此时。。。static华丽低调登场
当事物被声明为static时,即使不创建对象,也可以访问其static域和static方法
static 变量
上代码
public class StaticMember { public static int num = 1;}
测试类
/** * Created by 侯彬彬 on 2016/4/15. */public class Main { public static void main(String[] args) { StaticMember statieMember = new StaticMember(); StaticMember statieMember1 = new StaticMember(); System.out.println(StaticMember.num); //直接访问 System.out.println(statieMember.num + " == " + statieMember1.num); statieMember.num++; //2对象共享此变量 System.out.println(statieMember.num + " == " + statieMember1.num); }}
结果
11 == 12 == 2Process finished with exit code 0
总结
- 可以直接通过ClassName.member访问静态变量
- static变量会被多个对象共享
- static 一般可以用来声明静态常量,如下
/** * Created by 侯彬彬 on 2016/4/15. */public class StaticMember { //public static int num = 1; public static final String INFO = "hello world"; public static void main(String[] args) { System.out.println(StaticMember.INFO); }}
结果
hello worldProcess finished with exit code 0
这种静态常量有利于代码的编写与维护
static 方法
static方法 的用处之一,就是用来写工具类方法
比如 java.util.Collections
public class Collections extends Object此类完全由在 collection 上进行操作或返回 collection 的静态方法组成
注意
- static 方法中不能引用非静态方法。反之可以
/** * Created by 侯彬彬 on 2016/4/15. */public class StaticMethod { public void show() { staticShow(); System.out.println("common method"); } public static void staticShow() { show(); //error System.out.println("static method"); }}
static 块
static 代码块中的代码仅执行一次。在类被创建时,或者静态成员被访问时。(即使对象未创建)
上代码
/** * Created by 侯彬彬 on 2016/4/15. */public class StaticBlock { public static int num = 0; public static int num2 = 10; static { System.out.println("hello world"); } public static void main(String[] args) { StaticBlock staticBlock = new StaticBlock(); StaticBlock staticBlock2 = new StaticBlock(); }}
结果
hello worldProcess finished with exit code 0
访问静态成员时
/** * Created by 侯彬彬 on 2016/4/15. */public class StaticBlock { public static int num = 0; public static int num2 = 10; static { System.out.println("hello world"); } public static void main(String[] args) { System.out.println(StaticBlock.num); }}
结果
hello world0Process finished with exit code 0
总结
static代码块可以用来优化代码
参考资料
- 《Thinking in Java》
0 0
- Java this关键字,static关键字
- Java static关键字,final关键字
- JAVA STATIC 关键字
- Java中的static关键字
- JAVA中的static关键字
- Java 中 static 关键字
- java static关键字
- java static关键字
- Java关键字final、static
- java中static关键字
- Java中static关键字
- java中static关键字
- java中关键字:static
- JAVA中的static关键字
- java中的static关键字
- java关键字 static
- java中的static关键字
- java关键字static
- Linux mysql c API封装
- volatile关键字和mutable关键字
- Linux内核学习笔记八——定时器和时间管理
- Android系列--DOM、SAX、Pull解析XML
- torque---添加计算节点
- Java static关键字
- 中国科学院研制的开放式超导磁共振成像磁体系统
- ios开发-- 开发细节(得到当前View的ViewController)
- 极光单独设置铃声,震动模式相关问题解决
- 常见linux攻击技术之绕过NX实现栈溢出攻击
- angular input回车事件
- Struts中防止表单重复提交
- 【Java集合源码剖析】Vector源码剖析
- 做认真的人为自己负责