Java菜鸟笔记:Java中的static和final修饰词的用法和区别

static

1)Static修饰的变量是静态变量:

1.1) 由static修饰 值可以修改
1.2) 属于类,存在方法区中,只有一份
1.3) 常常通过类名来访问
1.4) 何时用:所有对象的数据都一样,静态变量的值和所在类的对象无关。

class A {
	public static int index = 100;           //index就是static修饰的静态变量
}

2)由static修饰的方法是静态方法:

21)由static修饰
2.2)属于类,存在方法区中,只有一份
2.3)常常通过类名来访问
2.4)静态方法没有隐式的this传递,不能直接访问本类中的变量 //静态变量除外
没有this就意味着没有对象,而实例成员必须通过打点来访问,所以静态方法不能访问实例成员
2.5)何时用:方法的操作仅与参数相关而与对象无关(与main并列的方法最好用static修饰)

class B {
	public static void testMethod(){          //testMethod就是静态方法,可以直接通过类名访问,不需要类的对象
	} 
}

3) 由static修饰的代码块静态块

3.1) 属于类的代码块,在类加载期间执行的代码块,只执行一次,可以用来在软件中加载静态资源(视频音频等)
3.2) 因为类只加载一次,所以静态块也只加载一次
3.3) 何时用:常常用于加载静态资源(图片、视频、音频···)

成员变量没有static修饰,存在堆中,不能通过类名直接访问,需要类的对象来访问;
而static修饰的静态变量存在方法区中,可以直接通过类名访问,也可以用类的对象访问

final

1) 修饰变量:变量不能被改变
2) 修饰方法:方法不能被重写
3) 修饰类:类不能被继承

问:final修饰的变量怎么赋值(初始化)?
由final修饰的变量有两种赋值方式:
1、声明变量的同时初始化

public final int sample = 520;

2、构造器中赋值(如果final声明的变量没有赋值,会报编译错误)

class C {
	public final int sample;
	public C{
		sample = 520;
	}
}

static final 修饰常量

1、 必须在声明的同时赋值
2、 通过类名点来访问,常量值不能被改变
3、 建议:常量名所有字母都要大写
4、 常量在编译时被自动替换为具体的值

你可能感兴趣的:(自学java,java,java)