静态变量、常量和方法

static关键字修饰的变量、常量和方法被称作静态变量、静态常量和静态方法。还可以用static来修饰代码块,static修饰的代码块叫静态代码块

静态变量、静态常量和静态方法称为静态成员。静态成员属于类所有,区别于个别对象,可以在本类或其他类使用类名和“.”运算符调用静态成员。

使用静态成员的作用通常是为了提供共享数据和方法。

静态成员都存放在“静态区”,具有全局作用范围,内存中静态区在程序运行结束之后才会释放。

注意:1、static只能修饰在类里定义的成员部分,包括成员变量、方法、内部类和初始化块,不能将局部变量使用static修饰。
2、静态变量属于类,随类的初始化而初始化(静态代码块中);实例变量属于对象,随对象的初始化而初始化(构造方法或代码块中)。

静态变量

静态变量又叫类变量,属于类所有,类的所有对象共享同一个类变量,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

例如:

public class Test {
	public static void main(String[] args) {
		A a1 = new A();
		A a2 = new A();
		
		System.out.println(a1.num);
		System.out.println(a2.num);
		
		a1.num = 9;
		
		System.out.println(a1.num);
		System.out.println(a2.num);
	}
}

class A {
	static int num = 0;
}

运行结果:

在这里插入图片描述

从运行结果可以看到,类A中定义了一个static修饰的静态变量num,初始值为0,并且实例化了两个类A的对象a1和a2,一开始a1和a2调用num打印的值都是0,执行了a1.num = 9;之后a1和a2调用num打印的值都是9了。

注意:不建议使用对象来调用类变量,建议使用类名和“.”运算符调用,例如:A.num。

静态常量

静态常量由static和final共同修饰,其值在程序运行过程中不可改变,并且必须在定义的时候显示初始化。静态常量和静态变量一样属于类,类对象共享。

静态方法

静态方法是类中由static修饰的方法,静态方法中不可以调用非静态成员变量和非静态方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

例如:

class A {
	static int num = 0;
	static final int NUM = 99;
	private int number =999;
	public static void show() {
		System.out.println("num:" + num);
		System.out.println("NUM:" + NUM);
		System.out.println("number" + number);//不能调用非静态常量
	}
}

但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。

main()方法

main()方法是Java类中的一个特殊的静态方法,其声明为:
public static void main(String[] args) {}

main()方法是程序的入口,程序在运行的时候,第一个执行的方法就是main()方法,方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值