static关键字

来源:互联网 发布:乐视电视mac码可以干嘛 编辑:程序博客网 时间:2024/05/16 16:23

static(静态的)可以用来修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。


Static修饰方法

静态方法不依赖任何对象就可以访问,所以对静态方法来说是没有this关键字的。

静态方法不能访问非静态方法和非静态成员,而非静态方法和非静态成员可以访问静态方法。

类的构造器实际上也是静态方法

Static修饰变量

static修饰的变量为静态变量,静态变量被所有对象共享,只有一个副本;非静态变量是对象所拥有,创建对象时被初始化,可存在多个副本,副本间不受影响。 成员变量静态变量生命周期随对象产生和销毁随类的加载产生调用方式通过对象调用 通过类或者对象调用别名实例变量类变量数据存储位置堆方法区

static代码块

可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

单例设计模式

特性:多个程序使用同一配置信息对象时,保证对象的唯一性。

不允许其他程序用new创建对象;在该类创建一个本类实例;对外提供一个方法使其他程序可以获取该对象。


用法:1、私有化该类构造函数

        2、通过new在本类创建一个本类对象

        3、定义一个公有方法将创建对象返回


不使用单例设计模式:

class Demo4{public static void main(String[] args){Single s1=new Single();s1.setAge(22);Single s2=new Single();System.out.println(s1.getAge());System.out.println(s2.getAge());}}class Single{private  int age=20;public void setAge(int age){this.age=age;}public int  getAge(){return age;}}
输出

2220

使用单例设计模式

class Demo4{public static void main(String[] args){Single s1=Single.getInstance();s1.setAge(22);;System.out.println(s1.getAge());Single s2=Single.getInstance();System.out.println(s2.getAge());}}class Single{private  int age=20;private Single(){}private static Single s=new Single();public static Single getInstance(){return s;}public void setAge(int age){this.age=age;}public int  getAge(){return age;}}
输出

2222