Java学习笔记——static的用法

在Java中static关键字有三种使用形式:

1.用于声明静态变量

2.用于声明静态函数或者说静态方法

3.用于声明静态代码块

1、用于静态变量

用于静态变量时,可以直接使用类名进行调用,如:

public class Person{
	static int i
}

 

而在调用i的时候,可以直接使用类名进行调用:

public class Test{
	public static void main(String[] args){
		Person.i = 10;
	}
}


另外,静态变量还有其他的特点。

 

 对于普通的成员变量,对于每一个对象中声明的i是指的是不同的内存地址空间,也就是说,不同的对象中的成员变量是各自独立的,如果对自己的成员变量进行修改,不会影响到其他的对象的成员变量。

但是对于静态的成员变量,则正好相反,静态成员变量对于所有的对象的引用,都是内存中的同一地址,也就是,所有的对象共享一个变量,如果其中的一个进行了修改,那么大家的值都会修改,换言之,静态成员变量在内存中只有一份,所有的对象都是共享这一份变量,如:

 

2、用于静态方法

 

static用于静态方法的时候,同样可以直接使用类名进行调用, 无需生成对象。如:

public class Person{
	static int i;
	int j;
	static void fun(){
		System.out.println("静态函数");
	}
}


 

public class Test{
	public static void main(String[] args){
		Person.i = 10;
		Person.fun();
	}
}

无需先进行对象的创建,直接使用类名调用就可以。

注意:在静态方法中不能使用非静态的变量

比如说,将上面的Person类的fun()方法进行修改,修改为:

static void fun(){
		System.out.println("静态函数" + j);
	}

在println中调用了一个非静态变量 j,这时系统会报错:

错误: 无法从静态上下文中引用非静态 变量 j
 System.out.println("静态函数" + j);
                             ^

但是如果这个变量是静态的,比如将fun()再修改为调用 i :

static void fun(){
		System.out.println("静态函数" + i);
	}

那么这时,编译过程就不会出错 了,因为 变量 i 也是静态的,静态方法可以调用静态的变量。

 

3、用于静态代码块

静态代码块声明就是用static后面加上一对花括号完成,然后再括号内填上要执行的代码,如:

public class Person{
	static int i;
	int j;
	
	static{
		System.out.println("静态代码块");
	}
	
	static void fun(){
		System.out.println("静态函数" + i);
	}
}


中间的那部分,就是静态代码块,静态代码块,没有名字,方法有方法名,变量有变量名,但是静态代码块没有名字,直接就是这种格式,那么静态代码块是在什么时候被调用的呢,它是在类的装载时被调用的。比如,我们不通过main方法进行执行,而是直接通过 java Person进行调用,大家知道,这样程序肯定是会报错的,因为Person类中没有main方法,但是,运行的结果是:(注意,这个是根据mars老师的运行结果截的图,我在我自己的机子中运行,并没有打印出“静态代码块”这几个字,不知道是不是因为jdk版本的原因)

静态代码块不是很常用,它的主要作用就是用来对一些静态变量进行赋值操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值