Java全局变量与局部变量

Java中代码块分为静态代码块和非静态代码块

首先来区分一下静态代码块和非静态代码块的区别(在起作用时间):

1、静态代码块类加载的时候执行;

package joon;
public class Test {
    static{
	System.out.println("静态代码块");
    }
}

2、非静态代码块每次创建对象时执行,每创建一个对象就会执行一次;

package joon;
public class Test {
    static{
        System.out.println("静态代码块");
    }
public static void main(String[] args) {
	Test test=new Test();//因为创建的对象没有使用所以会出现警告
	new Test();
	}

}
public class Test {
    {
	System.out.println("非静态代码块");
    }
    static{
	System.out.println("静态代码块");
    }
    public static void main(String[] args) {
	new Test();
	new Test();
    }
}

运行结果是:静态代码块 非静态代码块 非静态代码块

全局变量和局部变量

全局变量(成员变量):直接在类中定义的变量。

全局变量定义后,其作用域是其所在的整个类,成员变量的定义没有先后顺序。

局部变量:局部变量定义在代码块 方法体 方法参数列表,局部变量没有默认值,所以使用之前需要赋值(初始化)。

局部变量的作用范围:从定义的位置开始到所在的语句块结束。

如果局部变量的名字与全局变量的名字相同,则在局部变量的作用范围内全局变量被隐藏,即这个全局变量在同名局部变量所在方法内暂时失效。 如果在局部变量的作用域范围内访问该成员变量,则必须使用关键字this来引用成员变量。

package joon;
public class Test {

	int score;
	int height;
	char letter;
	boolean flag;
	double light;
	static{
		System.out.println("静态代码块");
	}
	{
		System.out.println("非静态代码块");
		System.out.println(height);
		System.out.println(letter);
		System.out.println(flag);
		System.out.println(light);
	}
	{
	    if(true) {
		int score1=100;
		System.out.println(score1);
	    }
	double score=90;
	System.out.println(score);
	System.out.println(this.score);
	}

}

 声明局部变量时,数据类型前除final外不允许有其他关键字,即其定义格式为: [final] 数据类型 变量名 = 初始值;

局部变量不能使用访问控制符修饰,因为局部变量的作用范围已经限定,局部变量不能用static修饰

this关键字不能用在静态代码块或者静态方法中,由于非静态方法只能用对象调用,而静态方法还可以用类名调用,类名不是对象,所以this不能用在静态方法中
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章