Java静态方法详解(一文秒懂)

Java静态方法详解(一文秒懂)-mikechen

Java静态方法定义

在java中静态方法是指被static修饰的成员方法就是Java静态方法。

/**
*在方法前面加入static
*/
public static long add(long i, long j) {
    return i + j;
}

与静态变量相似,用static修饰符修饰的方法属于类的静态方法,又称为类方法。

静态方法的实质是属于整个类的方法,而不加static修饰的方法是属于某个具体对象的方法,因此在静态方法中不能使用this关键字,也不能直接访问所属类的实例变量和实例方法,但是可以直接访问所属类的静态变量和静态方法。

 

Java静态方法格式

当 static 修饰成员方法时,该方法称为静态方法 ,静态方法在声明中有 static ,可直接使用类名来调用,格式如下

修饰符 static 返回值类型 方法名 (参数列表){
//执行语句
}

修饰后,代码如下:

public static void hello() {
System.out.println("hello world!");
}

 

Java静态方法调用

静态方法的调用格式:

类名.方法()

调用后,代码如下:

MethodTest01.add(20,60);

静态方法调用的注意事项:

  • 静态方法可以直接访问类变量和静态方法。
  • 静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
  • 静态方法中,不能使用this关键字。

 

静态方法与实例方法的区别

  1. 非static的方法是属于某个对象的方法,在创建这个对象时,对象的方法在内存中拥有属于自己的代码段;
  2. 而static的方法是属于整个类的方法,它在内存中的代码段被所有的对象所拥有,而不被任何一个对象所专有;
  3. 由于static方法是属于整个类的方法,故不能直接操作和处理属于某个对象的成员,而只能处理整个类的成员,即static方法只能访问static成员变量或调用static成员方法;
  4. 在静态方法中不能使用this或super关键字,因为this代表调用该方法的对象,但现在静态方法不需要对象来调用;
  5. 调用静态方法时,可以使用类名称来调用,或使用某一个具体对象名来调用,格式如下:
(1)类名称.静态方法名();

(2)对象名.静态方法名();

 

Java静态方法举例

import java.util.*;

public class TestStatic {
    public static void main(String[]args){
        System.out.println(S.getStatic());//使用类名加前缀访问静态方法
        S s=new S();
        System.out.println(s.getStatic());//使用实例化对象名访问静态方法
        System.out.println(s.get());
    }
    public static class S
    {
        private static int a;
        private int t=0;

        //静态初始器:由static和{}组成,只在类装载的时候(第一次使用类的时候)执行一次,往往用来初始化静态变量。
        static{
            a=10;
        }

        //静态方法只能访问静态数据成员
        public static int getStatic()
        {
            return a;
        }

        public int getT()
        {
            return t;
        }

        //非静态方法可以访问静态方法和非静态方法
        public int get()
        {
            getT();
            getStatic();
            t=a;//非静态方法可以访问非静态数据成员和静态数据成员
            return t;
        }
    }
}

 

 

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法