在Java的学习过程中,我们为了让自己的代码更加简洁美观或者为了在重复部分一劳永逸,定义方法对于我们总是必不可少的。而在定义方法时不仅要标注返回值类型,还要在前面加上一个public和static,所以我利用课余时间,对static进行了一些肤浅的学习。
首先,我们先了解一下static这个英语单词的中文翻译,它作为形容词时,有静止的、静态的、停滞的的意思,虽然它也有名词词义,但此处不多赘述了。
根据我的学习,static在Java中作为一个修饰符,表示静态,可以用它来修饰成员方法、成员变量。被他修饰后的成员方法叫做静态方法,被修饰后的变量叫做静态变量。
我们先来浅谈一下静态变量,静态变量一般用于类中,静态变量可以被这个类的所有对象共享,且可以通过类名调用和对象名调用两种方法。当编译器检测到静态变量时,会把静态变量的信息存到堆内存的静态区中单独存储。比较特别的一点是静态变量时随着类的加载而加载的,可以优先于对象的出现。并且它静态变量不属于对象,而是属于类。
先来,我们来重点说一说静态方法。静态方法一般很少用在Javabean类之中,但是它经常被用在测试类和工具类之中。调用方法也是类名调用和方法名调用。而静态方法只能访问静态变量和静态方法。非静态方法可以访问静态变量和静态方法,也可以访问非静态的成员变量和非静态的成员方法。且静态方法中不能出现this关键字,因为this代表调用该方法的对象,但现在静态方法不需要对象来调用。静态方法属于整个类的方法,它在内存中的代码段被所有的对象所拥有,而不被任何一个对象所专有;而没有加static修饰的方法只能是属于某个特殊的具体对象的方法,在创建这个对象时,对象的方法在内存中拥有属于自己的代码段。
为什么main方法要用static来定义呢?应为在Java中,类是程序的组织单元,当我们执行程序的时候,编译器并不知道main方法会被放在哪一个类中,也不知道是否要对这个类产生对象,为了解决这个程序运行问题,我们将main方法定义为了静态方法,这样的话,在我们运行一个Java代码时,因为存储位置的不同,编译器会自动在这个类中去调用main这个静态方法,而不需要对main方法所在的类产生对象,当我们加载这个类时,我们的main方法也自然而然作为Java程序的一个入口被加载运行了。
如果一个方法没有通过static修饰的话就说明它只是一个成员方法,只能通过对象来调用这个方法,在Java程序运行运行时,是没有实例化对象的,只能通过调用类方法来运行main方法,所以要用static修饰。
以上便是我利用课余时间对static修饰符的一点点学习,通过本次学习,我受益匪浅,又一次让我感受到了计算机科学的美,希望在未来的学习生活中,我可以学到更多像这一样,既有趣又有用的计算机科学知识。
标签:静态方法,变量,静态,周记,对象,static,自学,方法 From: https://www.cnblogs.com/usadingzhen/p/16708424.html