菜鸟教程第一天

1、Java变量类型

1.1 成员变量可以声明在使用前或者使用后。这句话怎么理解?

大家都知道,如果你在代码中使用这个变量,但是在此之前没有声明这个变量,是会报错的。如果是局部变量,在使用前,必须得声明并初始化才可以。成员变量即使你没有给它进行初始化,但是Java会自动给它一个默认值,所以在使用前必须得声明。
那菜鸟教程中的这句话不就有问题了吗?
但是想想自己的水平,总觉得质疑它有点问题,因为就先去百度一下这句话应该怎么理解。
成员变量可以声明在使用前或者使用后——成员变量是类的属性,你可以在类的任何地方声明成员变量,而不仅仅是在使用该变量前。

学任何知识点都要具备质疑之心,但是在提出你的质疑之前,你得先确保你质疑的东西是正确的。

1.2 成员变量在静态方法中为什么要用完全限定名来进行访问?

我们都知道,静态方法中只能访问静态变量,成员变量如果不用static修饰,那在静态方法中使用该成员变量就会报错。
静态方法和静态变量都是跟类直接关联的,在类加载的时候开始初始化静态变量和执行静态方法的,它们不依赖于类的实例。
但是成员变量是与类的实例相关联的,在创建对象的时候才会初始化成员变量。
因此,在静态方法中,无法直接访问非静态的成员变量,因为静态方法没有隐式的this引用,它不能直接使用实例变量。
为了在静态方法中使用非静态的成员变量,你需要使用完全限定名,即类名.变量名的方法。这样做是为了明确你要访问的成员变量所属的类。
如果在方法中定义了一个与类的成员变量同名的变量,那么在该方法中调用该变量名时,优先访问的是局部变量还是成员变量?
优先访问的是方法内部的局部变量。局部变量具有更高的优先级,并且会隐藏同名的成员变量。如果你想调用的是成员变量,请问完全限定名的方式调用该变量。

可以在非静态方法中访问静态变量。

你可能感兴趣的:(java)