java—static
发布日期:2021-06-29 11:11:19 浏览次数:3 分类:技术文章

本文共 1359 字,大约阅读时间需要 4 分钟。

1;static,静态;

在java中可以使用static关键字把成员声明为静态成
静态变量也可以成为类变量;非静态变量就是实例变量;
静态方法也可以是类方法;非静态方法叫实例方法;
为什么叫类…..,叫实例…….
因为静态成员一个重要特点是;
它不属于对象,而是属于类的;它保存在类的公共区域而不是单独的对象内存中;叫做数据域;也就是任何一个对都可以直接方法该类的静态成员;并且可以直接用类名.静态成员;而非静态的成员必须要对象的引用才可以访问;因此就可以有了类…和实例…这一说法了;

2;关于静态变量和非静态变量的例子;

这里写图片描述

3;常量;

学习java这么久应该还没有听说java的常量是怎样声明的吧;
对,java中没有直接的修饰符来实现常量,而是通过static和final两个关键字一起实现的;
声明常量;
public static final int x = 10;
其中这三个可以public static final换动顺序;
static属于类,不必创建对象就可以使用,因为常量应该不依赖于任何对象。并且final表示值不可变;
注意;一般用作常量的静态成员变量变量访问权限都设为public,因为常量应该允许所有的类或对象访问;

4;关于静态成员变量初始化;

对于非静态变量,在我之前的博客中有个图,就是关于其默认值的分配,然而今天我又在书上看到,
这样一句话,
对于非静态成员变量时,系统不好为其分配默认值,必须在构造器完成之前对其初始化;
其实两边都没有错,是自己看东西的时候没有注意细节;
其默认初始化是;
每当创建一个对象后,如果对象有成员变量,则系统会自动分配一个初始值;
注意细节;
这里是创建对象之后;才会自动分配;
而这里说的是,在创建对象之前,只是编写完类还没实例化的时候;

回到静态变量,它同样还是成员变量,因此系统也不会为其分配默认值;但是静态变量是属于类的,是不能等到构造器允许在初始化的,因此类加载完成之后,其值必须可以使用;

java中静态成员变量变量的初始化有两个;

1;在声明的同时初始化;
2;在静态语句块中进行初始化;
注意;静态语句;其实也可以相当于静态成员的一种;但是它只执行一次,是在类加载的时候执行一次,并且是在构造方法之前执行;因此可以通过他对类进行初始化;
看例子;
这里写图片描述
这里写图片描述

5;一句话;

静态成员不依赖于该类的对象;所以当其所在类加载成功后就可以被访问了;
什么时候是类加载成功呢????
这里写图片描述

6;静态与非静态的一些关系;

静态成员是当其所在类加载完毕之后就存在了,而此时对象不一定存在,因此非静态成员也不一定存在;
6.1;静态方法不能访问非静态成员;因为静态方法属于类,非静态方法属于对象,所以静态方法将不知道关于其所属类对象的信息;若要在静态方法中访问非静态成员只能使用指向特定对象的引用即可;
6.2;当然静态方法肯定可以方法静态成员;因为都是属于类的;同时存在;
6.3;在静态方法中是不能使用this预定义对象引用的,即使其后面是操作静态成员也不行;因为this代表指向自己对象的引用,而静态方法是属于类的,不属于对象,其成功加载后,对象还不一定存在,即使存在,也不知道this指的是哪一个对象;
6.4;非静态方法访问静态成员,当然这个是肯定成立的;

转载地址:https://blog.csdn.net/zw1996/article/details/53236676 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java权限修饰词
下一篇:java关于类的一些知识

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月25日 01时26分07秒