Java中的static关键字

小白前几天通过郝斌老师的视频学习了Java的static关键字,颇有收获,因此,我整理成文发布到博客上以此来让自己记得更加牢固,若有不对的地方,希望大佬们能够指正。

Java中的static关键字:
static修饰的方法叫做静态方法,static修饰的属性叫做静态属性。

下面我们通过代码的形式来了解static关键字的一些注意事项:
1.一个类的多个对象公用一个static属性

class A 
{
	public static int i = 10 ;
	public void show()
	{
		System.out.printf( " i = %d\n", i ) ;
	}
}
class Teststatic
{
	public static void main ( String[] args )
	{
		A aa1 = new A() ;
		A aa2 = new A() ;
		A aa3 = new A() ;
		aa1.i = 20 ;
		aa2.show() ;
		System.out.printf("       i = %d ",aa3.i ) ;
	}
}

输出结果是:
i = 10
i = 10 ;
这说明了A类的三个对象aa1,aa2,aa3共用一个static属性i 。

2.static方法是属于类本身的,可以说:在没有创建对象时,我们可以通过类名的方式访问类中static成员(包括属性和方法)

class A 
{
	public static int i = 110 ;	
	public static void show()
	{
		System.out.printf( "sdgwgwrhwrhwrh\n") ;
	}
}

class Teststatic_2
{
	public static void main( String[] args ) 
	{
		System.out.printf( " i = %d " , A.i ) ;
		A.show() ;
	}
}

输出结果:
i = 110
sdgwgwrhwrhwrh

3.static成员是属于类本身的,但很明显static也是属于对象的,很自然的也能用对象名来访问类中static的成员(这个看起来像是废话。。。。就不用代码证明了)

4.只有非private的static成员才能通过类型名的方式被访问,也就是说:static表示该成员具有通过类型名的方式被访问的先决条件,但同时还必须满足一个条件:该成员是非private类型

class A 
{
	private static int i = 10 ;
	
	private static void show()
	{
		System.out.printf( " I like Java \n") ;
	}
}

class Teststatic_3
{
	public static void main( String[] args )
	{
		System.out.printf(" i = %d\n ",A.i ) ;
		A.show() ;
	}
}

程序会报错:因为即使成员是静态的,但是被private修饰就不能通过 类名.成员名 或者通过 对象名.成员名 来访问。

5.非静态方法可调用静态成员 , 静态方法不能调用非静态成员,非静态方法的“权力”更大
理解记忆:非静态方法可以调用静态成员 (这是因为只有对象才能调用非静态方法,通过类名的形式却不能,既然对象既可以调用静态和非静态成员,因此非静态方法可以调用静态成员)。静态方法不能调用非静态成员( 调用静态方法的可以是类也可以是对象,但是只有对象才能调用非静态方法)。

需要注意的是: 在C/C++中static关键字是可以作用于局部变量的,但是在Java中是不允许使用static修饰局部变量的。这是Java语法的规定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值