Java中static和final关键字用法总结
来源:互联网 发布:sql server存储过程 编辑:程序博客网 时间:2024/05/20 23:34
Static 可以修饰方法、变量、类
1. 静态方法
在一个类中定义一个方法为static,调用该方法的方式“类名.方法名”。
声明为static的方法有几条限制:
- l 仅能调用其他的static方法
- l 只能访问static数据。
- l 不能以任何方式引用this和super
- l static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract
2. 静态变量
声明为static的变量实际上是全局变,调用方式“类名.静态变量名”。
- l Static变量前可以有 public 、private 、protect等权限修饰符。
- l 声明类的对象时,不生成static变量的副本,而是类的所有实例共享同一个static变量(存储在内存中全局区)
- l 如果你需要通过计算来初始化你的static变量,你可以声明一个static块,Static 块仅在该类被加载时执行一次
- l 被static修饰的变量叫静态变量,不被static修饰的变量叫实例变量。实例变量依赖于具体的类的实例对象。Static变量或者方法独立于实例而存在因此不能用this或super并且优先初始化
class Value3 {
static int c = 0;
Value3() {
c = 15;
}
Value3(int i) {
c = i;
}
static void inc() {
c++;
}
}
public class Count {
public static void prt(String s) {
System.out.println(s);
}
Value3 v = new Value3(10);
static Value3 v1, v2;
static {//此即为static块
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
v1 = new Value3(27);
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
v2 = new Value3(15);
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
}
public static void main(String[] args) {
Count ct = new Count();
prt("ct.c=" + ct.v.c);
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
v1.inc();
prt("v1.c=" + v1.c + " v2.c=" + v2.c);
prt("ct.c=" + ct.v.c);
}
}
结果为:
v1.c=0 v2.c=0
v1.c=27 v2.c=27
v1.c=15 v2.c=15
ct.c=10
v1.c=10 v2.c=10
v1.c=11 v2.c=11
ct.c=11
这个程序展示了静态初始化的各种特性。如果你初次接触Java,结果可能令你吃惊。可能会对static后加大括号感到困惑。首先要告诉你的是,static定义的变量会优先于任何其它非static变量,不论其出现的顺序如何。正如在程序中所表现的,虽然v出现在v1和v2的前面,但是结果却是v1和v2的初始化在v的前面。在static{后面跟着一段代码,这是用来进行显式的静态变量初始化,这段代码只会初始化一次,且在类被第一次装载时。如果你能读懂并理解这段代码,会帮助你对static关键字的认识。在涉及到继承的时候,会先初始化父类的static变量,然后是子类的,依次类推。
3. 静态类
通常一个普通类不允许声明为静态的,只有一个内部类才可以。这时这个声明为静态的内部类可以直接作为一个普通类来使用,而不需实例一个外部类。
public class StaticCls {
public static void main(String[] args) {
OuterCls.InnerCls oi = new OuterCls.InnerCls();
}
}
class OuterCls {
public static class InnerCls {
InnerCls() {
System.out.println("InnerCls");
}
}
}
结果为:InnerCls
- 关于Java中static和final关键字的用法总结
- Java中static和final关键字用法总结
- Java中 final 关键字 和 static 用法
- java中static 和 final关键字用法
- java中final和static关键字总结
- Java中final和static关键字总结
- Java关键字final, static的用法总结
- Java关键字final,static的用法总结
- java 关键字final static 用法总结
- java中final和static关键字的用法
- java中static关键字和final关键字
- Java中static关键字和final关键字
- java中final static关键字用法
- java---final 关键字 和 static 用法
- java---final 关键字 和 static 用法
- java---final 关键字 和 static 用法
- java 中的 final 关键字 和 static 用法
- java---final 关键字 和 static 用法
- php 创建有读写权限的文件
- 初识量化投资有感
- PHP-Zend引擎剖析之Hello World(二)
- 初识Hibernate
- Django之路
- Java中static和final关键字用法总结
- Spring 异常处理HandlerExceptionResolver
- ajax提交&等特殊字符
- GTX1080ti 安装cuda-8.0和cudnn-7.5
- 浮点数f和浮点数的相反数-f在内存中怎么表示
- iphone屏蔽视频里的广告
- c++作业4
- 简单的Adapter万能适配器
- R语言绘图函数汇总