黑马程序员技术交流社区

标题: static [打印本页]

作者: yibo924    时间: 2014-12-14 16:11
标题: static
static 变量存在哪里? 方法又存在哪里?类又存在哪里? 普通方法和类又存在哪里
作者: 姿_`态    时间: 2014-12-14 16:19
静态:static
     用法:是一个修饰符,用于修饰成员(成员变量,成员方法)
     当成员被静态修饰后,既可以被对象调用,又可以被类调用,类名.静态成员。

static的特性:
     1.随着类的加载而加载
     2.优先于对象存在。
     3.被所有对象所共享。
     4.可以直接被类名调用。
     5.修饰的是共享数据。
     注意:静态随着类的消失而消失,生命周期长,明确一点,静态先存在,对象时候存在的。

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

     1.存在位置:类变量随类的加载而存在方法区中
     2.生命周期:类变量岁类的消失,生命周期长,
                 实例变量随类的消失而消失生命周期短。
     3.调用方式:类变量可以直接被类名调用。,成员变量,可以被对象调用。
     4.别名不同:静态变量也称类变量,成员变量也称实例变量。
静态的使用注意事项:
     1. 静态方法只能访问静态成员
        非静态方法可以访问非静态成员。
     2.静态方法中不可以定义this,super关键字,(静态优先于对象存在,所以静态方法中不可以存在this关键字)
     3.主函数是静态的。

静态有利有弊:
     利:对对象共享数据进行单独存储,节省空间,没必要每一个对象存储一份。 可以直接被类名调用。
     弊:生命周期长,,访问出现局限。

main 不是关键字,但是是一个特殊的单词,可以被jvm识别。
     主函数是固定格式, 其中main(String[])是jvm识别的标志
     jvm在调用主函数是传入的是 new string[0]


由于静态方法有访问局限性,那什么时候定义静态方法呐。
在不涉及特有方法是,不涉及特有变量 可以定义静态的

==============================================================================================================

class DuoTaiTest4
{
        public static void main(String[] args)
        {
                Demo d = new Demo(7);
                d.speak();
                Demo.speak();//静态方法类名直接调用。
                d.show();
        }
}
class Demo
{
        int age;
        static int num=9;
        Demo(int age)
        {
                this.age=age;
        }
        public static void speak()//静态方法只能访问静态成员
        {
                System.out.println(num);//静态方法只能访问静态成员
        }
        public void show()
        {
                System.out.println(age);
        }
}
作者: 清诗纪事    时间: 2014-12-14 19:43
类是存在于栈内存的,对象是存在于堆内存的,方法是存在于方法区的。其他的参考楼上
作者: 戴高乐    时间: 2014-12-14 19:53
这个毕老师的视频都有讲的 你肯定没看视频
作者: 戴高乐    时间: 2014-12-14 19:57
这个毕老师的视频都有讲的 你肯定没看视频




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2