java静态与非静态。 新手求教:在编程时候,什么时候定义静态方法,什么时候定义非静态方法比较好?
作者&投稿:邵呼 (联系方式在网页底部的电邮联系)
Java中,静态方法是在什么时候分配内存~
被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。
只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。
用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。
static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。
如果有什么地方不明白可以追问。
你要先明白什么是static,才好比较。被static修饰的方法或变量会优先于类实例的产生而常驻于内存。也就是说有可能类的实例还没用用到的时候,该类里的静态函数已经在内存中出现了。
所以,如果说一个方法作为一个工具性的功能(比如产生数据库连接啊等等),可以考虑做成静态的,这样效率比较高,因为他一直在内存中,随用随拿,不用new实例再调用。
楼主你好,定义静态变量了比如数据库的连接信息,你可以用静态的,也可以加上final,不让修改,你做的一些功能性的类里面可以用静态的成员,比如你可以做一个得到日期的类,那样里面就用静态的成员。除了这些,其他的都可以用非静态的成员或方法来定义。
需要在静态方法中调用的变量,一定要设为静态。
但主要的话,还是说那种全局变量,设为静态比较好,他不会因为对象不同而变得值也不同。比如你统计在线人数的时候,完全可以设置一个全局静态变量
相关视频
随着类的加载而加载,优先于对象存在的
当你这个类中的这个方法不需要对象就能运行时,使用静态方法,通常都是在工具类中定义静态方法!这样使用工具类不必创建对象,可以直接类名.方法名来使用!
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。
只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。
用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。
static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。
如果有什么地方不明白可以追问。
你要先明白什么是static,才好比较。被static修饰的方法或变量会优先于类实例的产生而常驻于内存。也就是说有可能类的实例还没用用到的时候,该类里的静态函数已经在内存中出现了。
所以,如果说一个方法作为一个工具性的功能(比如产生数据库连接啊等等),可以考虑做成静态的,这样效率比较高,因为他一直在内存中,随用随拿,不用new实例再调用。
楼主你好,定义静态变量了比如数据库的连接信息,你可以用静态的,也可以加上final,不让修改,你做的一些功能性的类里面可以用静态的成员,比如你可以做一个得到日期的类,那样里面就用静态的成员。除了这些,其他的都可以用非静态的成员或方法来定义。
需要在静态方法中调用的变量,一定要设为静态。
但主要的话,还是说那种全局变量,设为静态比较好,他不会因为对象不同而变得值也不同。比如你统计在线人数的时候,完全可以设置一个全局静态变量
相关视频