static关键字

被static关键字修饰的方法称为静态方法 没有被static关键字修饰的方法一般称为非静态方法。同理 被static关键字修饰的成员变量 叫静态的成员变量 没有被static 修饰叫非静态成员变量
静态方法 只能访问静态的成员变量 如果访问非静态的成员变量 那么无法通过编译
访问方式:
无需创建对象 使用类名就可以直接调用

举例:

class test12{
    public static  int i;
    public static void main(String[] args){
       //类名直接访问
       System.out.print(test12.i);
       //类名直接访问静态方法
       int j=test12.f1();
       System.out.print(j);
}
public static int  f1(){
    return i;
}
}


非静态方法 既能访问静态的成员变量 也能访问非静态的成员变量
访问方式
只能通过创建对象的方式进行调用

//以创建对象的方式调用
       test12 t=new test12();
       t.f2();
       

}
public static int  f1(){
    return i;
}
public int f2(){
    //访问静态变量
    return  i;
}
public int f3(){
    //访问非静态变量
    return k;
}
}

静态的方法或者成员变量被整个程序共用,相当于共享

class Person
public static int i;
public Person(){
}
public static int sumNumber(){
return true;
}
public static void main(String [] args){
  System.out.println(Person.i);
}
**静态的方法或者成员变量被整个程序共用,相当于共享**
class test{
public static void main(String [] args){
System.out.println(Person.i);
System.out.println(Person.sumNumber());
}
}

注意:
被static修饰的内容在代码程序中会按照顺序进行加载,如果主函数在下面,那么会优先加载静态成员变量和成员方法

package main;

public class StaticTest {
	//1 先执行private static StaticTest st=new StaticTest();
	//1 此时count1 count2 都为0
	private static StaticTest st=new StaticTest();
	//3 执行private static int count2=0的赋值操作 此时count1=1 count2=0
	private static int count1;
	private static int count2=0;
	//2 调用构造器 count1 count2进行++ count1和count2值都变为1
	public StaticTest(){
		count1++;
		count2++;
		System.out.print("11111");
	}
	/**
	 * static 代码块在程序中只执行一次,被static修饰的代码都是按照代码的顺序被调用的
	 * 如果主函数在下面,那么会优先加载静态成员变量和成员方法
	 */
	static{
		System.out.print("00000");
	}
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.print("222222");
		// TODO Auto-generated method stub
		//4 执行主函数 StaticTest st=StaticTest.getInstance()
		//4 此时没有创建新对象,只是进行一个对象的赋值操作 所以count1还是为1 count2还是为0
      StaticTest st=StaticTest.getInstance();
      System.out.println("count1 "+count1);
      System.out.println("count2 "+count2);
	}
	public static StaticTest getInstance(){
		System.out.print("33333");
		return st;
	}
}

栈空间存储的是局部变量,基本数据类型变量,引用类型的引用
堆空间存储的是对象,常量池(在方法区中)
静态区用于存放static关键字所存储的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值