用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象时 , 不生成static变量的副本 , 而是类的所有实例共享同一个static变量 。
static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用),但是不能在其他类中通过类名来直接引用 , 这一点很重要 。实际上你需要搞明白 , private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了 。static前面加上其它访问权限关键字的效果也以此类推 。
static修饰的成员变量和成员方法习惯上称为静态变量和静态方法,可以直接通过类名来访问,访问语法为:
类名.静态方法名(参数列表...)
类名.静态变量名
用static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块(用处非常大) 。
static在Java语言中的使用有四种:(变量、方法、代码块、内部类)
1、static变量
按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类
变量;另一种是没有被static修饰的变量,叫实例变量 。
两者的区别是:
对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存 , 在加载类的过
程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的) 。
对于实例变量 , 没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝 , 互不影响(灵活) 。
2、静态方法
静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字 , 不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法 。因为实例成员与特定的对象关联!这个需要去理解,想明白其中的道理,不是记忆?。。?
因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract 。
3、static代码块
static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次 。
java中静态代码块的作用跟用法Java静态代码块的作用:Java静态代码块中的代码会在类加载JVM时运行,且只被执行一次,也就是说这些代码不需要实例化类就能够被调用 。一般情况下,如果有些代码必须在项目启动的时候就执行的时候,就需要使用静态代码块 。
Java静态代码块的用法:一个类可以使用不包含在任何方法体中的静态代码块,当类被载入时 , 静态代码块被执行,且只被执行一次,静态块常用来执行类属性的初始化 。例如:
static
{
int
a=0;
}
java中详解静态代码块,构造代码块 , 构造方法 。求简单易懂的解释静态代码块:只要一用到某个类,那么这个类的静态代码块就先执行 , 比如:
public class Dog(){
int i = 0;
static {
i = 1;
}
public Dog(){
i = 2;
}
}当你new 一个Dog()对象时,首先i=
1 会执行,然后才执行
public Dog(){}这个方法 。
推荐阅读
- 这什么玩意短视频下载,这什么玩意短视频下载
- Flutter动态热更新,flutter不更新了
- 奥莱耐克公众号关注,奥莱耐克
- 直播运营导师理由,直播运营专家
- vb.net窗口震动 vbs弹出窗口
- chatgpt会取代会计吗,未来会计会不会被取代
- mysql对比postgresql,mysql对比两张表不一致
- 税收计算Java代码,java编写个人所得税计算程序
- vb.net整数随机数 vb 随机整数