java中的静态⽅法
静态⽅法:static
静态⽅法可以⽤类名调⽤,⽽⾮静态⽅法不能⽤类名调⽤,只能⽤实例对象调⽤
静态⽅法:静态⽅法会随着类的定义⽽被分配和装载⼊内存中。静态⽅法可以调⽤静态⽅法以及访问静态数据域,但静态⽅法不能调⽤实例⽅法或者访问实例数据域。
实例⽅法:只有在类的对象创建时在对象的内存中才有这个⽅法的代码段。实例⽅法可以调⽤实例⽅法和静态⽅法,以及访问实例数据域或者静态数据域。
引⽤静态⽅法时,可以⽤类名.⽅法名或者对象名.⽅法名的形式。
静态变量:静态变量被类中所有的对象所共享,它将变量值存储在⼀个公共的内存地址,因为地址公共,所以如果某个对象修改了静态变量的值,那么同⼀个类的所有对象都会受到影响。
⾮静态变量:⾮静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
静态意味着它只在类被加载时创建⼀次,只拥有⼀个拷贝,不会随着创建的实例对象的增加⽽增加
当声明⼀个对象时,并不产⽣static变量的拷贝,⽽是该类所有的实例变量共⽤同⼀个static变量
3.static的⼀些特点:
(1)、当使⽤到类时,类被加载到内存,⽽静态成员随着类的加载⽽加载;
(2)、静态成员可以⽤类名直接调⽤,它是优先于对象⽽存在的;
(3)、它为所有的对象所共享,都可以来调⽤。它是先于对象⽽存在的。
4.实例变量和静态变量的⼀些区别:
(1)实例变量随着对象的产⽣⽽被封装在堆内存中,⽽静态变量随着类的加载⽽加载到⽅法区中。
(2)存储空间不同,⽣命周期不同。
(3)静态的⽅法中不可以定义this super 等关键字,因为静态是先于对象⽽存在的,this是当前对象的引⽤
5.main⽅法为什么⽤static来定义?
在C/C++当中,这个main⽅法并不是属于某⼀个类的,它是⼀个全局的⽅法,所以当我们执⾏的时候,c++编译器很容易的就能到这个main⽅法,然⽽当我们执⾏⼀个java程序的时候,因为java都是以类作为程序的组织单元,当我们要执⾏的时候,我们并不知道这个main⽅法会放到哪个类当中,也不知道是否是要产⽣类的⼀个对象,为了解决程序的运⾏问题,我们将这个main⽅法定义为static,这样的话,当我们在执⾏⼀个java代码的时候,我们在命令提⽰符中写:java Point(Point为⼀个类),解释器就会在Point这个类当中,去调⽤这个静态的main⽅法,⽽不需要产⽣Point这个类的对象,当我们加载Point这个类的时候,那么main⽅法也被加载了,作为我们java程序的⼀个⼊⼝。
static修饰的变量如果⼀个⽅法没有⽤static来修饰的话就说明这是⼀个成员⽅法,只能通过对象来调⽤这个⽅法。在Java程序运⾏时,是没有实例化任何对象的,只能通过调⽤类⽅法来运⾏main⽅法,所以会⽤static来修饰
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论