有关于静态方法的一点了解

一.printArray();

1.字面意思:打印 阵列;

2.在java中是 直接引用printarray()方法;

3.在直接引用时,首先要创建方法private static void printArray();

4.printArray作为java语言中的一个方法是为了,简化程序,但不可滥用。

二.有关于静态方法

printArray是静态方法中比较重要的一个。在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。调用静态方法可以无需创建对象。静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。

main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。

<转>静态方法何时使用:

  • 如果某些操作不依赖具体实例,那它就是静态的,反之如果某些操作是依赖具体实例的(例如访问一个特定会员的名称),那它就应该是实例化的。
  • 静态方法不用new对象可以直接调用
  • 1.与类相关与对象无关 2.不需要对象的“轻”方法 3.工厂方法
  • 如果某个方法是用频率较高,或者方法本身通用性较强,无需初始化类成员变量,则可以使用静态方法,那样方便,速度也快.
  • 可以直接拿来就用的方法,就算是静态的.
  • 肯定不涉及具体对象,因为静态方法内,是无法直接使用任何非静态成员的。
  • (1)制作工具类 (2)可以当作"作局"对象或方法来使用
  • 静态方法和实例方法是一样的,在类型第一次被使用时加载。调用的速度基本上没有差别。
  • 静态方法不用创建实例就可调用,比较简单从面向对象的角度上来说,在抉择使用实例化方法或静态方法时,应该根据是否该方法和实例化对象具有逻辑上的相关性,如果是就应该使用实例化对象  反之使用静态方法
  • 不需要生成对象的 经常频繁使用的 工具类里的(如SqlHelper)
  • 适当地使用static方法本身并没有什么,当一个人从来不懂使用多态、接口设计时,很自然地会滥用static方法。
  • 个人理解在多个类中需要调用并且是与对象无关的方法可设为静态方法,方便调用。
  • 所有对象共有的方法
  • 再不关系到任何于特定对象相关的操作 比如学生的年龄就是学生的相关。 修改学生的年龄就不适合用静态方法。 一般来说,如果你的方法里没有用到this关键字, 那就适合用静态方法
  • 通常通用的类中一些常用的方法可以设计为静态类
  • 只要是没有用到类的状态信息,只从参数获取信息的都可以为静态的
  • 可以实现某些特殊的设计模式:如Singleton
  • 由于没有this指针,可以把某些系统API的回调函数以静态函数的形式封装到类的内部
  • 可以封装某些算法,比如数学函数,如ln,sin,tan等等,这些函数本就没必要属于任何一个对象,所以从类上调用感觉更好
  • 总之,从OOA/OOD的角度考虑,一切不需要实例化就可以有确定行为方式的函数都应该设计成静态的
  • 静态方法与非静态方法最明显的区别就是如果某个方法是公共静态的,那么可以直接通过类名.方法名的方法来调用,而公共实例方法则需要事先实例化对象,然后才能调用。

java静态对象到底有什么好处?

A,静态对象的数据在全局是唯一的,一改都改。如果你想要处理的东西是整个程序中唯一的,弄成静态是个好方法。 非静态的东西你修改以后只是修改了他自己的数据,但是不会影响其他同类对象的数据。

B,引用方便。直接用 类名.静态方法名  或者  类名.静态变量名就可引用并且直接可以修改其属性值,不用get和set方法。

C,保持数据的唯一性。此数据全局都是唯一的,修改他的任何一处地方,在程序所有使用到的地方都将会体现到这些数据的修改。有效减少多余的浪费。

D,static final用来修饰成员变量和成员方法,可简单理解为“全局常量”。对于变量,表示一旦给值就不可修改;对于方法,表示不可覆盖。 (2)静态变量、静态方法和静态块

通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象(跟类是否有static修饰无关)。

你可以将方法和变量都声明为static。static 成员的最常见的 例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。 声明为static的变量实质上就是全局变量。声明为static的方法有以下几条限制:

A,它们仅能调用其他的static 方法

B,它们只能访问static数据

C,它们不能以任何方式引用this 或super(this涉及到对象,super 与继承有关)

(3)外部使用静态变量或者静态方法

在定义它们的类的外面,static 方法和变量能独立于任何对象而被使用,你只要在类的名字后面加点号运算符即可。可以看到,这种格式与通过对象引用变量调用非static方法或者变量的格式类似。这就是Java 如何实现全局功能和全局变量的一个控制版本。

(4)静态类是指在一个类的内部,又定义了一个用static修饰的类。那静态类的功能又体现在哪里呢?可以用C中的结构体内嵌结构体来理解,其次需要了解2个概念:内部类和静态修饰符static。 A,首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。

B,静态都是用来修饰类的内部成员的。比如静态方法、静态成员变量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。这样静态内部类就可以理解了,它可以直接被用 外部类名+内部类名 获得。

时间: 2024-10-12 03:13:57

有关于静态方法的一点了解的相关文章

算法(第4版)-1.2.3 抽象数据类型的实现

总结:本小节详细讲解了抽象数据类型的实现过程,包括实例变量.构造函数.实例方法的创建,三种变量的作用域和API.用例与实现. 重点: 1. 如果实例变量在初始化之后不应该再被改变,我们会使用final. 2. 如果没有定义构造函数,类将会隐式定义一个默认情况下不接受任何参数的构造函数并将所有实例变量初始化为默认值. 3. 实例方法和静态方法有一点关键的不同:实例方法可以访问并操作实例变量. 4. 三种变量的作用域: · 参数变量:整个方法: · 局部变量:当前代码段中它的定义之后的所有语句: ·

day8-Python学习笔记(十八)面向对象,self,私有,属性方法

面向对象编程:把以前你写的那些函数封装到一个类里面 类:定义类的时候,类名的首字母都大写,用类的话,必须得先实例化 构造函数:类被实例化的时候,它会自动的执行构造函数. 属性:类里面的变量方法:类里面的函数. self代表的是本类对象. 实例就是对象,实例变量和类变量 私有函数 私有变量 只能在类里面使用,出了类就不能用了. 继承 父类有的功能.变量子类全有. 如果定义的类,有很多重复功能的,那就可以把这些重复的类,定义成父类 封装 多态 python不支持多态 一种方法多种实现. 实例方法,必

python之类的相关名词-继承-

继承:父类有的功能,子类继承后也都有 继承是直接把父类方法写入子类的object里 如果定义的类有很多重复的功能,可以把重复的类定义成父类 静态方法:不需要实例化就可以调用,不可以调用类里面的变量和方法 类方法:不需要实例化就可以调用,也可以调用类里面的变量和方法 xiaohei='哈哈哈'@staticmethod #静态方法,不需要实例化,可以直接使用def other(): print('我是静态方法') @classmethod #类方法,也不需要实例化,可以直接使用#类方法可以使用类变

PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

  前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1  PHP中的抽象类与抽象方法 1.什么是抽象方法?              没有方法体 {} 的方法,必须使用abstract 关键字修饰.这样的方,我们叫做抽象方法.                    abstract function say(); //    抽象方法 2.什么是抽象类?        

static、静态变量、静态方法

1 静态:static 1.1 用法 是一个修饰符:用于修饰成员(成员变量和成员函数) 1.2 好处 当成员变量被静态static修饰后,就多了一种调用方式,除了可以被对象调用外,还可以直接被类名调用格式:类名.静态成员,也就变成了类变量 2 静态的特点 2.1 随着类的加载而加载,也就是,说静态会随着类的消失而消失,说明静态的生命周期最长 2.2 优先于对象的存在 明确一点:静态是先存在的对象是后存在的 2.3 被所有对象共享 2.4 可以直接用 类名. 调用 3 实例变量和类变量的区别 3.

Thread中的静态方法

http://www.cnblogs.com/xrq730/p/4851344.html Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程".为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程进行操作.下面来看一下Thread类中的静态方法: 1.currentThread() currentThread()方法返回的是对当前正在执行线程对象的引用.看一个重要的例子,然后得出结论: public class

Java多线程3:Thread中的静态方法

Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程".为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程进行操作.下面来看一下Thread类中的静态方法: 1.currentThread() currentThread()方法返回的是对当前正在执行线程对象的引用.看一个重要的例子,然后得出结论: public class MyThread04 extends Thread { static { System.o

ExtJS与jQuery的一点细节上的对比

首先说明这不是一篇完整解读ExtJS和jQuery所有方面差异的文章,只是针对我个人刚看了两天的jQuery产生的一些疑问的整理.之前用过一段时间ExtJS,了解ExtJS的一些机制.现在做移动开发,又选定了jquery mobile,要写控件,所以需要了解jquery.(不过换工作之后应该不会再用jQuery了,坑估计是短期内填不上了) 1.jQuery是个什么东西?Ext是什么东西?(此处不是指两个框架,而是指我们在写程序的时候,经常用到的两个关键字--暂时称之为关键字) 之前用的是ExtJ

静态方法和实例化方法的区别

出处不明.(google了大半天,这篇文章的转载倒是挺多的,不过出处一直没找到,还有些没有标明转载,但发布日期比转载的还晚的忽略不计 = =#) 文章中,提到了不少我们容易混淆的问题,特别是装载.内存方面. 借此机会,再次向大家推荐<程序员的自我修养--链接.装载与库>一书!许多东西是看了那本书才知道的,有助于对静态方法和实例化方法的理解. ---------------------------------------------下面是转载的正文------------------------