Java中static关键字的用法

static关键字的用法

  • 语法格式

  • static 数据类型 变量名= 值; 静态

  • 数据类型 变量名 = 值 非静态

  • 1:static修饰变量
    1.1:static 修饰变量,会让变量成为类变量,也是静态变量,这个变量属于当前这个类,和对象没有关系
    1.2:静态变量是随着JVM第一次把类加载到内存中的时候,就把值赋值好了,比对象要提前,静态变量都有默认值
    1.3:静态变量属于一个共享的变量,每个对象都可以使用这个变量,静态变量存放的位置是内存中方法区
    静态变量和非静态变量的区别 ?
    共同点:
    1:都是变量
    2:都有默认值
    不同点:
    1:内存位置
    静态变量:方法区
    非静态变量:堆
    2:个数
    静态变量 :1个 被所有对象共享
    非静态变量:多个 每个对象都有各自的1个
    3:调用形式
    静态变量: 对象名.变量名 不推荐
    类名.变量名 推荐
    非静态变量:对象名.变量名
    4:加载时机
    静态变量 :类被第一次加载进内存的时候,空间就分配好了
    非静态变量:当你new对象的时候,才分配空间
    静态变量和非静态变量的使用场合
    根据这个变量是否被对象所共享来判断这个变量应该定义成哪种变量
    注意:局部变量不可以加static关键字
    public class Demo {
    static修饰方法
    1:static修饰方法,那么这个方法就被称为静态方法,或者类方法
    2:方法之间的调用
    2.1 非静态方法调用非静态方法:可以调用 直接调用
    2.2 非静态方法调用静态方法:可以调用 直接调用
    2.3 静态方法调用非静态方法:可以调用,必须手动的new一个对象,通过对象名.方法名
    2.4 静态方法调用静态方法:可以调用,直接调用 建议,在调用的前面把类名加上
    3:变量在方法的中用法
    3.1 :非静态变量可以在非静态方法中直接使用
    3.2: 静态变量可以在非静态方法中直接使用
    3.3: 非静态变量不可以在静态方法中直接使用,如果要使用必须手动的new一个对象,通过对象名.变量名来调用
    3.4 :静态变量可以在静态方法中直接使用

注意:静态方法不能以任何方式引用this和super关键字

静态代码块:static经常用来进行static变量的初始化。
* 当类被第一次加载的时候,首先会加载静态代码块
* 如果这个类被加载多次,那么这个静态代码块,不用多次加载,只需要使用第一次加载好的值即可,可以提高效率
语法格式
static{
代码块
}
注意:静态代码块只能初始化静态变量,不能初始化非静态变量
*
非静态代码块: 初始化变量值
语法格式
{
代码块
}
注意:非静态代码块可以初始化非静态变量以及静态变量
java各个语法结构的执行顺序

顺序: 静态代码块
非静态代码块
构造方法
注意:1:无论创不创建对象,静态代码块,一定会执行,而且是第一个被执行。
2:如果不创建对象,非静态代码块,不能执行。

int a = 1;//成员变量
static int b;//静态类变量

public void eat(){
	System.out.println(a);
	System.out.println(b);
}

public static void main(String[] args) {
	Demo d = new Demo();
	System.out.println(d.b);
	System.out.println(Demo.b);
	//System.out.println(Demo.a);
	//System.out.println(a);
}

}
-----------------------------------------------------
public class Demo2 {
int a = 10;
	  static int b = 20;
	public void a(){
	
}
public void b(){
	  System.out.println(a);
	   System.out.println(b);
}
public static void c(){
   //System.out.println(a);
   System.out.println(b);
}
public static void d(){
	
}

public static void main(String[] args) {
	c();
	d();
	
}

}
---------------------------------------------------------
public class Demo3 {
int a;
	static int b = 10;
	static int c = 20;

static{
	b  = 10;
	c  = 20;
	//a = 100;
}

{
	
  a = 100;
  b = 100;
  c=  2000;
}

public static void main(String[] args) {
	
	
	
	
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张子又

感觉有用就打赏点吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值