静态关键字static和静态代码块、局部代码快、构造代码块

一、静态什么时候使用?
1、静态变量
分析对象中所具备的成员变量的值都相同时,而且这个成员不需要修饰,这时成员变量就可以被静态修饰
2、静态函数

该函数是否需要访问对象中的特有数据

二、static关键字的特点:用于修饰成员(属性和方法)

1、可以用类名直接调用,可以不用创建对象时就可以使用

2、可以使用对象的引用调用

3、被static修饰的成员可以被所有的该类的对象共享

三、static关键注意事项:

1、静态方法只能访问静态成员(非静态可以自由访问静态或非静态成员)

2、静态方法中不可以使用this和super关键字

3、主函数是静态的


四、成员变量和类变量(静态变量)的区别?

1、声明周期不同

成员变量随着对象的创建而创建,随着对象被回收而释放

静态变量随着类的加载而创建,随着类的消失而消失。

2、调用方式不同

成员变量只能被对象调用

静态变量可以被对象调用,也可以使用类调用(建议使用类调用)

3、别名不同

成员变量又叫实例变量

静态变量又叫类变量

4、数据存储位置不同

成员变量位于堆内存中

静态变量存储在方法区(数据区或者共享区)的静态区

注意:方法也放在方法区

静态方法:静态方法可以使用类来调用


五、三种代码块以及实例

静态代码块:

特点:1、随着类的加载而执行

 2、只执行一次

作用:用于给类初始化(有的类不用构造函数,而需要初始化)

构造代码块:  在类中的代码块

特点:1、在创建对象时执行,每创建一个对象,就执行一次

 2、在创建对象时执行,在静态代码块后执行,且在构造函数前执行

作用:可以给所有的对象进行初始化

局部代码块: 在函数中的代码块

作用:限定函数中的局部变量的生命周期

class StructureCode
{
	private String name;
	static int num;
	<span style="color:#ff0000;">//构造代码块</span>
	{
		System.out.println("我是构造代码块");
		cry();   //没创建一个对象就执行一次cry(),代替下边两个构造函数中的cry()
	}
	<span style="color:#ff0000;">//静态代码块</span>
	static
	{
		num=10;
		num*=num;
		System.out.println("我是静态代码块");
	}
	StructureCode()
	{
		name="baby";
		System.out.println("我是构造函数");
		// cry();
	}
	StructureCode(String name) //构造函数是给对应的对象初始化
	{
		this.name=name;
		System.out.println("我是构造函数");
		// cry();
	}
	private void cry()
	{
		System.out.println("哇哇");
	}
	public void show()
	{		
		<span style="color:#ff0000;">//局部代码块</span>  
		{
			int i=55;
		}
		System.out.println("上边是局部代码块");
	}
}

class StaticDemo1
{
	public static void main(String args [])
	{
		StructureCode structureCode = new StructureCode("小强");
	}
}

六、主函数

public static void main(String args [])

主函数的特殊之处:

1、格式是固定的

2、被JVM所识别

public:因为权限必须是最大的
static:不需要对象的 直接用主函数所属的类名调用即可
void:没有返回值
main:默认的方法名
String args [] 主函数的参数列表,是一个数组类型的参数,而且元素都是字符串类型的
args:arguments的缩写,可变



你可能感兴趣的:(静态,static,静态代码块,构造代码块,局部代码快)