Java之static知识点和使用演示

来源:互联网 发布:iapp源码大全 编辑:程序博客网 时间:2024/06/16 17:35

面向对象之static

  一:  static:静态的,使用目的对于一些公有的重复的属性,不用给每个对象都要重复赋值了,可以节省内存了提高运行 效率,而选择给他添加到静态域中。使每个对象在创建以后,都共用这个属性。

           1. 类的属性,什么时候应该加static ? 
              ①多个类的对象,共的属性,适合声明为static的。
              ②常常一些常量,声明为static的。

          2.类的方法,什么时候应该加static ? 

             ①一些工具类的方法  ②操作静态变量的方法,一般也声明为static的。

static的作用:

1.static可以用来修饰的结构:

       属性(成员变量而言,局部变量不可以)、方法;内部类、代码块。

2.static修饰属性:
              1.创建一个类的多个对象,多个对象共用同一个类变量。多个对象各个拥一套实例变量。
 *        2.类变量存在于内存的静态域中。实例变量,存在于堆空间的对象中。

 *     3.我们可以通过对象调用类变量,而且通过对象1修改了类变量的话,我们使用对象2调用类变量,发现也是修改以后的值。

 *         4. 实例变量,是随着对象的创建,在堆空间的对象里开辟的。类变量,是随着类的加载,而加载的。类的加载,是先于对象的创建的。静态的变量可以直接通过“类.类变量”的形式来调用,而实例变量则不行。

 *         5.类与对象变量之间的调用规则:

              类变量实例变量

 *            类        yes       no
 *           对象    yes       yes

 *  可以通过类变量和实例变量生命周期的角度解释。

    6.静态属性不能用构造器赋值。

3.static修饰方法:静态方法(或类方法)
         1.静态方法,随着类的加载而加载的
 *      2.可以通过"类.静态方法"的方式来调用静态方法。
 *      3.类方法实例方法
 *           类yes  no
 *          对象 yes yes
 *      4.静态方法内可以调用静态的属性、静态的方法。不可以调用非静态的属性、方法。
 *        反之,在非静态方法可以调用静态的属性、静态的方法。

 *      5.静态方法内,不可以调用this 或 super关键字。

4.内存结构的解析:


6.使用举例:
①相关的工具类:Arrays\Collections\Math工具类
②单例模式

class Circle{
private double radius;
private int id;
private static int init = 1000;//类中的一个计数器,与具体的对象无关。使用static修饰
private static int total;//用于计算圆的个数
public Circle(double radius){
// this.id = ++init;
// total++;
this();
this.radius = radius;
}

public Circle(){
this.id = ++init;
total++;
}

@Override
public String toString() {
return "Circle [radius=" + radius + ", id=" + id + "]";
}
public static int getTotal(){
return total;
}
}


原创粉丝点击