栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中static修饰的变量及方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中static修饰的变量及方法

目录

引言

对象实例化过程

方法区

类变量

 类方法

Static修饰的限制


引言

在介绍static之前我们先来看下这段代码:

public class Test {
    public int a = 1;
    public static int b = 1;

    public static void main(String[] args) {
        Test test1 = new Test();
        test1.a++;
        System.out.println(test1.a);
        test1.b++;
        System.out.println(test1.b);
        Test test2 = new Test();
        test2.a++;
        System.out.println(test2.a);
        test2.b++;
        System.out.println(test2.b);
    }
}

猜猜会输出什么?

答案揭晓:

 

我们明明创建了两个对象按道理结果应该是2222才对,但第四个数井变成了3,这就值得深究了。

对象实例化过程

我们在主函数内创建了两个变量test1,test2。而test1、test2存储的是地址,所以test1、2也叫引用。test1引用了一个对象,test2也引用了一个对象,而这些对象中有啥呢,看下图:

 他们有Test类下的name,a。这个通过类创建对象的过程就叫做实例化。可我们在Test类下定义的不是还有b吗,它到哪去了呢?

方法区

在这个情况下,我们引入了一个新的区:方法区

1.存储代码片段

当一个类进行编译时产生了一个字节码文件通过类加载器加载到jvm的内存中,这时便会在方法区产生类的字节码文件。

2.存储静态的成员变量(也叫做类变量)。

我们看到静态变量只在方法区存储了一份,因此当我们通过对象使用它时,使用的是同一份,因此结果自然就是3了。

类变量

静态变量也叫做类变量,因为他可以不用创建一个对象就能使用它。

示例:

我们直接用类名也能直接调用成功。

 类方法

既然有类变量那肯定有类方法了。

我们定义了一个简单的类方法实践下。

 

Static修饰的限制

1.普通方法内不能定义类变量

原因:1.static修饰的变量为类变量,属于类的

           2.普通方法的调用需要new对象才能使用,而类变量不需要,假设能在普通方法内定义,     岂不是说可以直接调用普通方法而不需要new对象了。

2.类方法内不能定义类变量

 原因:1.static修饰的变量为类变量,属于类的。

总结:静态的成员变量是不可以在方法内部定义的。

3.普通方法内可以调用类方法

 原因:普通方法使用需要调用对象,而类方法不需要,因此可以调用。

4.类方法内不能调用普通方法

原因:普通方法调用需要new对象,而类方法不需要。

 本文分享到这就结束了,感谢阅读!

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/440009.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号