Java 中static和非static有什么区别

Java 中static和非static有什么区别Java 中static和非static有什么区别JAVA中有关键字static,可以修饰方法或者字段。那么,static修饰的方法和字段,与没

欢迎大家来到IT世界,在知识的湖畔探索吧!

Java 中static和非static有什么区别

JAVA中有关键字static,可以修饰方法或者字段。那么,static修饰的方法和字段,与没有static修饰的方法和字段,有什么区别呢?

在JAVA中,大部分方法和字段都是没有被static修饰的,也被称为实例变量实例方法,而被static修饰的则叫做静态变量静态方法

实例方法和实例变量

实例方法一般是一个new 出来的对象关联的方法,只能在一个new出来的实例上使用,实例变量也是与new 出来的对象关联,不同的对象之间实例变量不互相影响。
实例方法内部可以使用实例变量和静态变量。
下面是一个相关示例:

// 类声明
class ClassA {
    // 实例变量
    private int val;

    public ClassA(int val) {
        this.val = val;
    }

    // 实例方法
    public void hello() {
        // 使用实例变量
        System.out.println("hello" + val);
    }
}


// 使用
ClassA classA1 = new ClassA(1);
// 使用实例方法
// 输出 hello1
classA1.hello();

ClassA classA2 = new ClassA(2);
// 输出 hello2
// classA2里面的val变量是独立的,与classA1无关
classA2.hello();

欢迎大家来到IT世界,在知识的湖畔探索吧!

静态方法和静态变量

静态变量和静态方法是独立存在的,并且每个类的静态变量只有一份,不论这个类new了多少对象。所有new出来的对象都可以访问到这一份数据,对这份数据的任何修改,其他的实例都可以看到。
静态方法由于是独立存在的,不和任何一个实例关联,所以不能直接访问实例变量和实例方法。如果想要访问,只能通过某个实例的引用来访问实例变量和实例方法。

以下面这个类为例,解释一下上面的关系:

欢迎大家来到IT世界,在知识的湖畔探索吧!class ClassA {
    // 实例变量
    private int val;
    private static int staticVal;
}

关系如图所示:

Java 中static和非static有什么区别

可以看到,静态变量和静态方法是独立的,各个实例只是单向地访问他们。另外,他们不仅仅可以被这个类的实例访问,也可以被其他类直接访问。

静态变量和静态方法的访问方式

静态变量和静态方法一般通过类名访问,比如ClassA.staticVal,它可以被实例的引用访问,但是一般不建议,比如:classA1.staticVal。使用类名访问可以明确标识出这是静态变量,可以使代码更加清晰。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/34276.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信