static关键字的一点点小结

本文详细讲解了Java中static关键字修饰的实例变量和方法的特点,包括全局唯一性、内存位置、引用方式,以及static方法调用非static方法的规则。重点讨论了静态变量和静态方法的初始化顺序以及独特用法。
摘要由CSDN通过智能技术生成

概述

本篇博客介绍Java类中用static关键字修饰的方法以及实例变量所具有的特点!

特点1:static修饰字段与非static字段区别

1.用static修饰的实例变量或者类,它们是类共同拥有的,即属于某一个类的,而不属于对象,即全局唯一,假设实例化了好几个该类的对象,那么这些对象中static修饰的字段的值是共享的,即全局唯一;2.static修饰的字段存储在固定的内存空间处;3.在分配资源方面,首先给static关键字修饰的分配存储空间,之后再给非static分配存储空间!也就是先初始化static字段和static方法,然后才初始化非static字段和方法!

特点二2:独特的引用方式

用static修饰的字段和方法可以用:类名.静态方法名 或者 类名.静态字段名 的方式进行引用。

特点三:一般而言,static方法中只能引用static方法,若要引用非static方法,则需要实例化一个类对象,再通过类对象在static方法中引用非static方法

见下述例子:

public class Test{
	//main方法是static方法
	public static void main(String[] args) throws Exception {
		new Test().printHello();
	}

	private void printHello(){
		System.out.println("Hello");
	}
}

通过上面的例子可以看出,由于main方法是static方法,所以它在调用非static方法printHello()时首先new了一个Test对象,然后再通过实例对象去调用的printHello()方法!
如果main方法中类似于下方所示的引用方式,则会报错:

public static void main(String[] args) throws Exception {
	//直接调用,而不是通过对象调用
	printHello();
}

为什么会出现上述状况呢?

那是因为JVM会先为静态变量或者静态方法分配内存,也就是静态变量或者静态方法先初始化,而这个时候普通成员变量或方法还未初始化!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值