`
bluenemo
  • 浏览: 178830 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多
静态方法和实例方法的区别主要体现在两个方面:

在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。

静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。

下面几个例子展示了这一区别。

1、调用静态方法示例。

//-----------hasStaticMethod.java-----------------public class hasStaticMethod{//定义一个静态方法public static void callMe(){  System.out.println("This is a static method.");}}

下面这个程序使用两种形式来调用静态方法。
//-----------invokeStaticMethod.java-----------------public class invokeStaticMethod{  public static void main(String args[]){  hasStaticMethod.callMe();  //不创建对象,直接调用静态方法      hasStaticMethod oa = new hasStaticMethod();   //创建一个对象  oa.callMe();      //利用对象来调用静态方法}}
程序两次调用静态方法,都是允许的,程序的输出如下:
This is a static method.This is a static method.

允许不创建对象而调用静态方法,是Java为了减少程序员调用某些常用方法时的麻烦,而允许程序员按照传统的C语言中使用函数的方式来使用方法。典型的例子是前面某些程序中使用"Math.ramdon()"来获取随机数。
还有一个很典型的代表就是数组的处理工具Arrays
2、静态方法访问成员变量示例。

//-----------accessMember.java-----------------class accessMember{private static int sa; //定义一个静态成员变量private int ia;  //定义一个实例成员变量//下面定义一个静态方法static void statMethod(){  int i = 0;    //正确,可以有自己的局部变量sa = 10;     //正确,静态方法可以使用静态变量  otherStat();    //正确,可以调用静态方法  ia = 20;   //错误,不能使用实例变量  insMethod();  //错误,不能调用实例方法}static void otherStat(){} //下面定义一个实例方法 void  insMethod(){  int i = 0;    //正确,可以有自己的局部变量  sa = 15;    //正确,可以使用静态变量  ia = 30;    //正确,可以使用实例变量  statMethod();   //正确,可以调用静态方法}}

本例其实可以概括成一句话:静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。

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


希望多多交流,多多关注,共同成就梦想
分享到:
评论

相关推荐

    Java静态方法和实例方法区别详解

    在设计类和方法时,应根据它们是否需要访问实例变量以及是否与特定对象实例相关来决定使用静态还是实例方法。合理的使用静态方法和实例方法可以提高代码的可读性、可维护性和性能。在实际编程中,要根据具体需求灵活...

    JAVA静态方法和非静态方法的区别和实例.doc

    JAVA静态方法和非静态方法的区别和实例 静态方法和非静态方法是 Java 编程语言中两个基本概念,它们在编程实践中扮演着重要角色。了解它们的区别和使用场景对于编写高效、可维护的代码至关重要。 什么是静态方法?...

    LINUX C调用JAVA的静态方法和非静态方法(实例方法)小实例

    1. **调用Java静态方法** 要调用Java的静态方法,我们首先需要通过`LoadLibrary`函数加载包含该方法的Java类,然后通过`FindClass`获取类的JNI描述符,再使用`GetStaticMethodID`获取静态方法的ID。最后,使用`...

    java整站静态生成方案一 实例工程源码

    java整站静态生成方案一 实例工程源码java整站静态生成方案一 实例工程源码java整站静态生成方案一 实例工程源码java整站静态生成方案一 实例工程源码java整站静态生成方案一 实例工程源码java整站静态生成方案一 ...

    java 静态非静态 字段方法 子类父类构造_初始化顺序!

    java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...

    java的静态域实例域

    在Java编程中,类的域...总之,理解和熟练运用Java的静态域和实例域以及它们与构造方法的关系是Java程序员的基本技能。通过合理的设计和使用,可以有效地组织和管理类的状态,为代码的健壮性和可维护性打下坚实基础。

    Java中的静态变量静态方法静态块与静态类.docx

    Java 中的静态变量、静态方法、静态块和静态类 Java 中的静态变量、静态方法、静态块和静态类是 Java 编程语言的四个重要概念,它们之间存在着紧密的关系。下面将对这四个概念进行详细的介绍。 一、静态变量...

    Java中的Static块与静态方法

    本文将深入探讨Java中的静态块与静态方法,解析它们的区别、联系以及执行顺序,帮助读者更全面地理解`static`关键字在Java中的运用。 ### 静态方法 静态方法是通过`static`关键字声明的,它属于类而不属于类的任何...

    JAVA静态成员和实例成员的加载时机

    JAVA静态成员和实例成员的加载时机,先有对象还是先load类的静态成员,先有实例还是先调用构造方法等

    Java中静态方法和非静态方法的区别.docx

    非静态方法可以访问静态数据成员和静态方法,也可以访问另一个类或同一类的非静态成员和方法,还可以更改任何静态数据成员的值。 三、访问成员和方法 静态方法只能访问另一个类或同一个类的静态数据成员和静态方法...

    java伪静态简单实例

    id=123&title=Java伪静态实例` 的URL时,会重定向到 `/articles/123/Java伪静态实例.html`。`$1` 和 `$2` 是正则表达式匹配到的内容,分别对应 `id` 和 `title` 参数的值。 然后,在你的Web应用的`web.xml`中,添加...

    java 静态块实例块构造器调用

    在Java继承体系中,子类会继承父类的非私有成员,包括静态块、实例块和构造器。调用顺序如下: 1. **静态块的执行顺序**:首先,从父类到子类,按照定义的顺序依次执行静态块。这意味着父类的静态块先于子类的静态...

    静态的魔力:Java中静态方法和变量的深度解析

    在Java中,静态(static)关键字被用来修饰类的成员变量和方法,表示这些成员属于类本身而非类的某个具体实例。这意味着: - **无需实例化即可访问**:静态成员可以在没有创建类的实例的情况下被访问。 - **所有实例...

    PHP中静态方法(static)与非静态方法的使用及区别.docx

    在PHP编程语言中,`static`关键字用于定义类的静态属性和方法,它们与类的实例(对象)无关,而是直接关联到类本身。理解静态方法和非静态方法的使用和区别是掌握PHP面向对象编程的关键。 静态方法是通过类名直接...

    Java静态工厂方法的实例详解

    Java静态工厂方法的实例详解 Java静态工厂方法是一种特殊的工厂方法,它可以返回类的实例,而不是通过构造器来获取实例。静态工厂方法通常以valueOf、getInstance、newInstance等命名,具有三个特点:具名、环保、...

    java笔记静态成员

    静态成员包括静态变量、静态方法和静态初始化块。 1、静态变量 静态变量是指属于类的变量,它们的值是共享的,所有实例都可以访问到同一个静态变量。在上面的代码中,`static int z;`就是一个静态变量。静态变量是...

    Java静态泛型使用方法实例解析

    Java静态泛型使用方法实例解析 Java静态泛型使用方法实例解析主要介绍了Java静态泛型使用方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下。 一...

    利用PowerMock模拟静态方法和私有方法的示例

    它的核心功能之一就是能够模拟静态方法、构造函数、final类和方法、私有方法等,这些都是传统单元测试难以处理的部分。 首先,理解静态方法的测试挑战。静态方法与对象实例无关,它们属于类本身,因此无法通过依赖...

    Java类间方法调用实例.pdf

    Java 类间方法调用是编程中的重要概念,特别是在面向对象编程...通过合理地组织类和方法,可以构建出高效、可维护的代码结构。此外,理解静态与非静态方法的区别也有助于更好地利用面向对象特性,如封装、继承和多态。

    java中静态与非静态的区别

    - 在性能上,静态方法与实例方法差别不大。但是由于静态方法的调用不需要实例化对象,因此在某些情况下可能会稍微快一点。 #### 五、静态内部类 1. **使用目的**: - 将内部类定义为静态,主要是为了简化代码...

Global site tag (gtag.js) - Google Analytics