static修饰符

一、概念
static并非静态的意思,static是类的意思,有static的成员是类成员,没有static的成员属于实例成员——static是用来修饰成员的!

static可修饰的成员包括:成员变量、方法、(不包括构造器,构造器是用来初始化对象的,new)、初始化块、内部类。(五大成员中的四个)

类变量和实例变量可以统称为成员变量**
成员变量是在类范围内定义的变量,局部变量是在一个方法内定义的变量)

C里面的static int age = 20;是静态,是能够修饰局部变量的

但是Java里面的static不可以修饰局部变量,不是静态!static是修饰成员的! 因为Java脱胎于C,所以保留了static,但是用法不同,swift里面直接用class了。

局部变量不属于成员,因此不可以用static修饰

static不能修饰外部类,因为外部类不属于成员。

(Java当年设计的这个static其实是错误的,但是现在很难改正了)

【小知识】class前面只能出现三个修饰符:public final | abstract class Xxx{ }
final与abstract互斥,二者只能出现一个,单独出现或者与public一起出现。

【建议】所有的类成员,都只能用类名调用!
如果遇到用对象来调用类成员的情形(虽然允许这样),建议先把对象改成类,这样更科学。

【常见考点】
static成员不能访问非static成员,非static成员能访问static成员。
成员:成员变量、方法、初始化块、内部类

eg1:成员变量

public class  面试题1
{
	int b = 20;
    static int age = b; 
}

在这里插入图片描述
调换位置就正确了!

eg2: 方法

public class  面试题1
{
	public int test()
	{
		return 2;
	}
	static int age = test();
}

在这里插入图片描述

eg3: 内部类

public class  面试题1
{
	class A
	{
	}
	static A a = new A();
}

没有static才对!

eg4: 静态方法,使用了非静态的内部类

public class  面试题1
{
	class A
	{
	}
	public static void main(String[] args)
	{
	//静态方法,使用了非静态的内部类
		A a = new A();
	}
}

eg5:初始化块

public class  面试题1
{
	int age;
	static 
		{
			age = 20;
		}
}

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值