Java基础——static关键字

对象只有在new的时候才会分配空间,有时候我们希望不管是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,就可以static修饰成员,也称静态成员或类成员。

static可修饰属性、方法、代码块、内部类。

特点:

  • 随着类的加载而加载(属于类),优先于对象存在。
  • static修饰的成员被所有对象所共享(也称类成员)。
  • 访问权限允许时,可不创建对象,直接被类调用。

静态成员引用格式:

java 复制代码
类名.[静态成员属性/成员方法]

示例:

java 复制代码
clasa Demo {
	private static String temp = "DEMO";
	public static void val() {
		System.out.println("Demo.val");
	}
}
class Test {
	public static void main(String[] args) {
		//直接使用类名调用
		System.out.println(Demo.temp;);
		Demo.val();
	}
}

静态属性、方法的设计思想:

  • 静态属性作为该类各个对象之间共享的变量。在设计类时,分析哪些属性不因对象的不同而改变,将这些属性设置为静态属性,相应的方法设置为静态方法。
  • 如果方法与调用者无关,则这样的方法通常被声明为类方法,由于不需要创建对象就可以调用静态方法,从而简化了方法的调用。

使用注意:

  • 类成员,直接使用类名.静态成员,不需要实例化。
  • static修饰的方法内只能调用static修饰的成员方法和成员变量,非static修饰的方法可以调用static修饰的成员(因为static修饰的成员优先对象加载)。
  • static修饰的方法不能被重写(因为static方法属于类,不属于对象)。
  • static方法内部不能有this和super(因为不需要实例就可以方法static方法,this和super都属于对象)。
相关推荐
weixin_3077791330 分钟前
PySpark实现ABC_manage_channel逻辑
开发语言·python·spark
lybugproducer1 小时前
创建型设计模式之:简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式
java·设计模式·建造者模式·简单工厂模式·工厂方法模式·抽象工厂模式·面向对象
??? Meggie1 小时前
【Python】保持Selenium稳定爬取的方法(防检测策略)
开发语言·python·selenium
南客先生1 小时前
马架构的Netty、MQTT、CoAP面试之旅
java·mqtt·面试·netty·coap
Minyy112 小时前
SpringBoot程序的创建以及特点,配置文件,LogBack记录日志,配置过滤器、拦截器、全局异常
xml·java·spring boot·后端·spring·mybatis·logback
百锦再2 小时前
Java与Kotlin在Android开发中的全面对比分析
android·java·google·kotlin·app·效率·趋势
武昌库里写JAVA2 小时前
39.剖析无处不在的数据结构
java·vue.js·spring boot·课程设计·宠物管理
酷爱码3 小时前
如何通过python连接hive,并对里面的表进行增删改查操作
开发语言·hive·python
画个大饼3 小时前
Go语言实战:快速搭建完整的用户认证系统
开发语言·后端·golang
喵先生!4 小时前
C++中的vector和list的区别与适用场景
开发语言·c++