6、static特点

来源:互联网 发布:判断字符串像素长度js 编辑:程序博客网 时间:2024/03/29 19:28
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

static关键字:
1、是一个修饰符,用来修饰成员,如成员变量,成员函数,当成员被静态修饰后,静态内容被对象所共享,这样做的好处是节约内存
2、当成员被静态修饰后,出了被对象调用外,还可以直接被类名调用,写法:类名.静态成员
3、静态修饰的对象存储在方法区或者说共享数据区
        (1)静态的意思,用来修饰成员变量和成员函数
        (2)静态的特点:
               随着类的加载而加载,类的消失而消失
                优先于对象存在,在new一个对象之前就存在了
               被所在类的所有对象所共享
                可以直接被类名直接调用
静态方法只能访问静态成员,静态方法中不可以定义this、super关键字,因为对象优先于对象存在
静态的使用:
1、因为静态修饰的内容有成员变量、成员函数,当功能中出现共享数据时,该数据被静态修饰,而对象中特有数据定义成非静态
2、当功能内部没有访问到非静态数据,那么该功能可以定义成静态的
子类对象可以继承父类的一切非私有的方法或属性,但对于私有的方法和属性需要间接地手段才可以,只要你这个静态方法不是私有的就可以被继承
3、当子类的成员变量与父类的成员变量同名时,子类的成员变量会隐藏父类的成员变量
4、当子类的方法和父类具有相同的名字、参数列表、返回值类型时,子类方法重写了父类中的方法,父类定义的方法被隐藏,当通过子类对象调用与父类中同名的变量和方法时。
操作的这些变量和方法在子类中定义
        (3)静态的注意事项
                A:静态方法只能访问静态成员
                   为什么:因为静态的内容是随着类的加载而加载,它是先进内存的。
                B:静态方法中不能使用this,super关键字
                C:主方法是静态的
                        public static void main(String[] args)
                        public:公共的意思,是最大权限修饰符。
                        static:由于jvm调用main方法的时候,没有创建对象。
                               只能通过类名调用。所以,main必须用static修饰。
                        void:由于main方法是被jvm调用,不需要返回值。用void修饰。
                        main:main是主要的意思,所以jvm采用了这个名字。是程序的入口。
                        String[]:字符串数组
                        args:数组名
                        在运行的时候,通过java命令给args数组赋值。
                        格式:java MainTest hello world itcast
        (4)静态变量和成员变量的区别
                A:调用方式
                        静态变量也称为类变量,可以直接通过类名调用。也可以通过对象名调用。 这个变量属于类。
                        成员变量也称为实例变量,只能通过对象名调用。这个变量属于对象。
                B:存储位置
                        静态变量存储在方法区中的静态区。
                        成员变量存储在堆内存。
                C:生命周期
                        静态变量随着类的加载而存在,随着类的消失而消失。生命周期长。
                        成员变量随着对象的创建而存在,随着对象的消失而消失。
                D:与对象的相关性
                        静态变量是所有对象共享的数据。
                        成员变量是每个对象所特有的数据。
        (5)静态的优点和弊端
                优点:
                对对象的共享数据进行单独空间的存储,节省内存,没有必要每个对象都存储一份
                可直接被类名调用
                弊端:
                生命周期过长,随着类的消失而消失
                访问出现权限,即静态虽好但只能访问静态
        (6)什么使用使用静态呢?
                A:当所有对象共享某个数据的时候,就把这个成员变量定义为静态修饰的。
                B:当某个方法没有访问该类中的非静态成员,就可以把这个方法定义为静态修饰。
                静态的生命周期比较长,所以一般不推荐使用。
        (7)静态代码块
                A:它只执行一次,它比main还先执行。
                B:执行顺序
                  静态代码块--构造代码块--构造方法
              静态代码块:就是一个有静态关键字标示的一个代码块区域。定义在类中。
              作用:可以完成类的初始化。静态代码块随着类的加载而执行,而且只执行一次(new 多个对象就只执行一次)。如果和主函数在同一类中,优先于主函数执行。
static方法可以被继承,如父类定义一个方法,子类的实例也可以调用该方法
如下代码
package com.ping.test;
public class Son extends Parent{
               public static void main(String[] args) {
                               Son.say(); //输出I'm Parent }
}
class Parent {
            public static void say() {
                    System.out.println("I'm Parent");
      }
  }
但是,需要注意的是,静态方法不能被重写,静态方法没有多态的概念,如果子类定义了跟父类一样的静态方法,那么只是对父类方法的隐藏;

0 0
原创粉丝点击