JAVA——static

Static

修饰符 static

  • 针对一个类所有对象的共性属性,JAVA采用static成员完成统一调用。

  • static在变量或者方法之前,表明它们是属于类的,称为类方法(静态方法)或者类变量(静态变量)。若无static修饰,则是实例方法(可以通过对象“.”来调用)和实例变量。

  • 和类的其他成员属性不同,static成员并不是存放在对象对应的堆空间中。而是将static成员存放在方法区中,每个对象的相应static共享一段内存。

修饰类

public class  T1{
	//修饰类
	 static t1_1{
		}
	}

修饰方法

  • 在成员方法前加static关键字,可以将其声明为静态成员方法
  • 静态成员方法只能对方法自生的局部变量或者类的静态成员变量进行操作(可以见以下例子)
  • 静态成员方法没有this引用
  • 和静态成员变量一样,可以通过类名或者对象访问静态成员方法(建议使用类名)

修饰属性

  • 可以将static和final联合起来使用
  • 当一个变量被static和final共同修饰时,其和仅用static修饰的变量的差异在于声明时必须初始化,而且在整个程序生命周期内不能再对这个变量进行二次赋值
  • static final常量通常用于保存整个应用程序共享的常量值
  • staticimport也可以使用通配符,如:import static java.lang.Math.*表示导入Math类中的所有的静态成员。

举一个例子

package demo3;
import com.sun.javafx.animation.TickCalculation;

public class test_static {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		T1 t1=new T1();
		T1 t2=new T1();
		//静态属性属于类,"所有对象"共享该成员变量
		//调用属性可以:对象名.属性名  或者  类名.属性名
		System.out.println("***静态属性**********************");
		System.out.println(t1.a);
		System.out.println(t1.a--);
		System.out.println(t1.a);
		System.out.println("***\"所有对象\"共享该成员变量********");
		System.out.println(t2.a);
		System.out.println(t2.a--);
		System.out.println(t2.a);
		System.out.println("***\"所有对象\"共享该成员变量********");
		//非静态属性,每个对象使用一份
		System.out.println("***非静态属性*********************");
		System.out.println(t1.b);
		System.out.println(t1.b--);
		System.out.println(t1.b);
		System.out.println("************");
		System.out.println(t2.b);
		System.out.println(t2.b--);
		System.out.println(t2.b);
		System.out.println("************");
		//调用方法可以:对象名.方法名  或者  类名.方法名
		T1.t1_1();
		t1.t1_1();
		t1.t1_2();

	}

}
class  T1{
	static int a=7;//静态成员变量
	public int b=3;
	//静态方法:无法直接访问实例方法,可以通过创建对象来调用
	public static void t1_1() {
		T1 tiT1=new T1();
		// 静态成员方法只能对方法自生的局部变量或者类的静态成员变量进行操作
		System.out.println(a);
		//报错:Cannot make a static reference to the non-static field b
		//静态方法里面不能直接调用类里面的属性,可以通过创建对象来调用
		//System.out.println(b);
		System.out.println(tiT1.b);
		//报错:Cannot make a static reference to the non-static method t1_2() from the type T1
		//同理
		//t1_2();
		tiT1.t1_2();
		
	}
	//实例方法:可以直接调用静态方法
	public void t1_2() {
		System.out.println(a);
		System.out.println(b);
		t1_1();
		
	}
}

运行结果:后面会一直运行下去
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值