JAVA static的作用
来源:互联网 发布:arm 模拟器 windows 编辑:程序博客网 时间:2024/05/11 04:47
(静态)类方法只能调用类(静态)变量,不能对非类(静态)成员变量调用,非静态方法即可以调用非类成员变量,也可以调用类变量
1、静态变量:被static修饰的变量
静态变量和实例变量的区别:
1>静态变量在内存中占用一份备份,运行时JVM只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存空间分配。可以直接通过类名访问静态变量。
2>实例变量:每创建一个实例,就会为实例变量分配一次内存。实例变量可以在内存中有多份备份,互不影响。
2、静态方法:被static修饰的方法
访问静态方法不需要创建类的实例,可以通过类名来访问。若已经创建了对象,也可以通过对象引用来访问。
在使用静态方法时,注意一下几点:
1>在静态方法里只能直接访问类中的其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为对于非静态的方法和变量,需要先创建类的实例后才可使用。
2>静态方法不能以任何方式引用this和super关键字。因为静态方法在使用前是不需要创建任何对象的,当静态方法被调用时,this所引用的对象根本就没有产生。
3>子类只能继承、重载、隐藏父类的静态方法,子类不能重写父类的静态方法,也不能把父类不是静态的方法重写成静态方法。
3、main()方法
如果一个类要被Java解释器直接装载运行,这个类中必须有main()方法,由于JVM需要调用类的main()方法,所以该方法的访问权限必须是public,又因为JVM在执行main()方法是不必创建对象,所以该方法必须是static()的,该方法接收一个String类型的数组参数,该数组中保存从命令行给main()方法传递的参数,main()方法执行结束后不返回任何类型,所以该方法的返回类型是void,因此main()方法的修饰符是public static void的。正因为main()是静态的,所以在main()方法中不能直接访问实例变量和实例方法。
4、静态代码块
类中可以包括静态代码块,它不存在于任何方法体中。在JVM加载类时会执行这些静态代码块。如果类中有多个静态代码块,那么JVM将按照它们在类中出现的顺序依次执行它们,没个静态代码块只会被执行一次。 JVM先执行静态代码块后,才能调用构造方法。
static型成员变量与static代码块是按照它们在类中定义的先后顺序依次执行的。
5、单态设计模式(Singleton)
所谓类的单态设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造方法的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的。
Singlton模式主要作用是保证在java应用程序中,一个类class只有一个实例存在。
在很多操作中,比如建立目录、数据库连接都需要这样的单线程操作。还有,Singleton能够被状态化;这样,多个单态类在一起就可以作为一个状态库一样想外提供服务。
6、内部类
嵌套类可以直接访问嵌套它的类的成员,包括private成员,但是嵌套类的成员却不能被嵌套它的类直接访问。
private int size;
public class Inner
private int size;
public void doStuff( int size)
size++; // 引用的是doStuff函数的形参
- 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 的作用
- 多线程的概念
- url 中 & 、 ? 、 # 的作用
- 深入iOS 5:解析两大隐藏特性
- 为什么编程是独一无二的职业
- rrdtool
- JAVA static的作用
- ubuntu 11.10 配置nfs
- checking for tgetent()... configure: error: NOT FOUND!
- 嵌入式数据库--SQLite简单应用(三)--基于Qt3+SQLite3的通信录
- All of Django'Models
- 【转载】开发经验总结,很受用。
- 2.文件IO---time(打印当地时间)
- 隐婚
- jquery 获取窗体宽度,可视化宽度