A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yibo924 中级黑马   /  2014-12-14 16:11  /  1180 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

static 变量存在哪里? 方法又存在哪里?类又存在哪里? 普通方法和类又存在哪里

5 个回复

倒序浏览
静态: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);
        }
}

评分

参与人数 1技术分 +2 收起 理由
船长 + 2

查看全部评分

回复 使用道具 举报
类是存在于栈内存的,对象是存在于堆内存的,方法是存在于方法区的。其他的参考楼上
回复 使用道具 举报
这个毕老师的视频都有讲的 你肯定没看视频
回复 使用道具 举报
这个毕老师的视频都有讲的 你肯定没看视频

点评

看了,老师教的都是让我们知其然,但是自己要有自己的理解,变成之所以然。在这过程中有些假设是自相矛盾的。我只想看看学生的理解,从物理层次上的   发表于 2014-12-15 17:41
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马