Java基础-静态变量与静态方法、各种变量、代码块

Java变量有两大类:局部变量和成员变量,java类的成员变量有俩种:一种是被static关键字修饰的变量,叫类变量或者静态变量;另一种没有static修饰,为实例变量。

类变量(静态变量):独立于方法之外的变量,用static修饰,可以不初始化。

实例变量:独立于方法之外的变量,不过没有 static 修饰,可以不初始化。

局部变量:类的方法中的变量,一定要初始化,否则编译不通过。

 

 

在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

静态方法:可以通过类名来调用,静态方法里不能调用其他非静态变量,也不可以访问非静态变量成员。

在Java的API中,类是被包装在包中,要使用API中的类,必须指导知道其放在哪个包中,而且开发者必须指明程序代码中所用到的类的完整名称。

import不会把Java程序变大,而且java.lang是个预先被引用的包,即除了在java.lang包中的类,其他类要用到的话必须指定完整名称。

代码块:代码块指的是使用"{}"括起来的一段代码,根据代码块存在的位置可以分为4种:

普通代码块:普通代码块就是直接定义在方法或语句中定义的代码块,

public void show(){

普通代码块

}

构造代码块:直接写在类中的代码块,优先于构造方法执行,每次实例化对象之前都会执行构造代码块。

public class Demo {

{System.out.println("我是构造代码块");}     //构造代码块

public Demo(){}

}

静态代码块:使用static修饰的构造代码块,优先于主方法执行,优先于构造代码块执行,不管有创建多少对象,静态代码块只执行一次,可用于给静态变量赋值

同步代码块:使用关键字synchronized

synchronized(obj)

{

//需要被同步的代码块

}

例子:

public class Demo13 {
Demo13(){
System.out.println("我是构造方法!");

}

{
System.out.println("我是构造代码块!");//实例化对象的时候才会去调用!

}

static{
System.out.println("我是静态代码块!");

}

public static void main(String[] args) {
new Demo13();

new Demo13();//再次创建对象,证明无论创建几次对象,静态代码块都只执行一次

System.out.println("我是普通代码块!");

}

}

输出:

我是静态代码块!

我是构造代码块!

我是构造方法!

我是构造代码块!

我是构造方法!

我是普通代码块!

总结:静态代码块  > 构造代码块 > 普通代码块

posted @ 2021-03-06 13:30  痕累  阅读(697)  评论(0编辑  收藏  举报