run_wind

导航

黑马程序员——JAVA基础之主函数main和静态static,静态代码块

 

 

主函数:是一个特殊的函数。作为程序的入口,可以被jvm调用。

 

主函数的定义:
public:代表着该函数访问权限是最大的。
static:代表主函数随着类的加载就已经存在了。
void:主函数没有具体的返回值。
main:不是关键字,但是是一个特殊的单词,可以被jvm识别。
(String[] arr):函数的参数,参数类型是一个数组,该数组中的元素是字符串。字符串类型的数组。

主函数是固定格式的:jvm识别。

jvm在调用主函数时,传入的是new String[0];

 

静态(关键字):static

 

static用法:

是一个修饰符,用于修饰成员(成员变量,成员函数)。

当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。

格式:  类名.静态成员。

 

static特点:
1,随着类的加载而加载。 也就说:静态会随着类的消失而消失。说明它的生命周期最长。

2,优先于的对象存在。明确一点:静态是先存在,对象是后存在的。

3,被所有对象所共享
4,可以直接被类名所调用。

 

实例变量和类变量的区别:
1,存放位置。类变量随着类的加载而存在于方法区中。 实例变量随着对象的建立而存在于堆内存中。
2,生命周期: 类变量生命周期最长,随着类的消失而消失。实例变量生命周期随着对象的消失而消失。

 

 静态使用注意事项:
1,静态方法只能访问静态成员。非静态方法既可以访问静态也可以访问非静态。
2,静态方法中不可以定义this,super关键字。 因为静态优先于对象存在。所以静态方法中不可以出现this。
3,主函数是静态的。


 
静态的利弊:
利处:对对象的共享数据进行单独空间的存储,节省空间。 没有必要每一个对象中都存储一份,可以直接被类名调用。
弊端:生命周期过长。访问出现局限性,静态只能访问静态。

 

什么时候使用静态static: 
 每一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装。以便复用。 虽然可以通过建立对象使用这些工具方法,对数组进行操作但是发现了问题:
1,对象是用于封装数据的,可是对象并未封装特有数据。
2,操作数组的每一个方法都没有用到对象中的特有数据。 
 这时就考虑,让程序更严谨,是不需要对象的。可以将类中的方法都定义成static的。直接通过类名调用即可。 
 将方法都静态后,可以方便于使用,但是该类还是可以被其他程序建立对象的。为了更为严谨,强制让该类不能建立对象。可以通过将构造函数私有化完成。

 

 

静态代码块


 

静态代码块格式:
static
{
    静态代码块中的执行语句。

 

静态代码块特点

随着类的加载而执行,只执行一次,并优先于主函数。
用于给类进行初始化的。

 

/**
* 静态代码块的演示
* 显示:b c a e9 d 
*/

class StaticCode
{
	int num=9;
	StaticCode()
	{
		System.out.println("b");
	}

	static
	{
		System.out.println("a");
	}
	{
		System.out.println("e"+this.num);//要用this.来访问
	}

	StaticCode(int x)
	{
		System.out.println("d");
	}
	public static void show()
	{
		System.out.println("show run");
	}
}

class StaticCodeDemo 
{
	static
	{
		System.out.println("b");
	}
	public static void main(String[] args) 
	{
		new StaticCode(4);
	}
	static
	{
		System.out.println("c");
	}
}


 

 

 

 

 

posted on 2014-11-23 15:54  run_wind  阅读(996)  评论(0编辑  收藏  举报