java static 特点

来源:互联网 发布:淘宝售假白名单 编辑:程序博客网 时间:2024/04/29 13:01

class  Person{

……

static string country = "cn";

}


class StaticDemo{

public static void main(String[] args){

//Person p = new Person();

//System.out.println(p.country);


System.out.println(Person.country);

}

}



当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。  类名.静态成员       Person.country


static 特点: 1 随着类的加载而加载,就是说,静态会随着类的消失而消失。说明它的生命周期最长(静态代码块static{}优先于主函数执行,执行一次)

2 优先于对象存在,静态是先存在,对象是后存在的。

3 被所有的对象所共享

4 可以直接被类名所调用


实例变量和类变量的区别:

1. 存放位置:类变量随着类的加载而存放在方法区中,实例变量随着对象的建立而存放在堆内存中

2. 生命周期:类变量 生命周期最长,随着类的消失而消失。实例变量生命周期随着对象的消失而消失。


静态使用注意事项:

1 静态方法只能访问静态成员(包括方法、变量)

非静态方法既可以访问静态也可以访问非静态

2 静态方法中可以不定义this super 关键字  因为静态优于对象存在

3 主函数是 静态的。


静态有利有弊: 

利:对对象的共享数据进行单独空间的存储,节省空间。没有必要每个对象中都存储一份。可以直接被类名调用。

弊:生命周期过长。  访问出现局限性。(静态虽好,只能访问静态)


静态的应用。

有时每一个方法,都没用到ArrayTool对象中特有的数据,此时是不需要对象的。

将ArrayTool中的方法都定义成static的,直接通过类名调用即可。


将方法定义成静态之后,可以方便使用。但是该类还是可以被其他程序简历对象(占内存)。为了更严谨,强制让该类不能建立对象。可以通过将构造函数私有化。


class ArrayTool{
private ArrayTool(){}
<span style="white-space:pre"></span>public static int geeMax(int[] arr){
<span style="white-space:pre"></span>int max = 0;
<span style="white-space:pre"></span>for(int x=1;x<arr.length;x++){
<span style="white-space:pre"></span>if(arr[x]>arr[max])
<span style="white-space:pre"></span>max = x;
<span style="white-space:pre"></span>}
<span style="white-space:pre"></span>}
<span style="white-space:pre"></span>.....}



0 0
原创粉丝点击