码迷,mamicode.com
首页 > 编程语言 > 详细

java第五章:面向对象(oop)之 static关键字

时间:2017-06-05 12:35:48      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:方式   tar   过程   构造器   全局变量   final   www   代码块   推荐   

java程序在执行过程中,类,对象以及它们成员加载、初始化的顺序如下: 
1、首先加载要创建对象的类及其直接与间接父类。
2、在类被加载的同时会将静态成员进行加载,主要包括静态成员变量的初始化,静态语句块的执行,在加载时按代码的先后顺序进行。
3、需要的类加载完成后,开始创建对象,首先会加载非静态的成员,主要包括非静态成员变量的初始化,非静态语句块的执行,在加载时按代码的先后顺序进行。
4、最后执行构造器,构造器执行完毕,对象生成。
上面四段话意思就是静态变量(全局变量)创建时间要早于new对象(成员变量)的时间。
所以静态的方法,不能访问非静态的属性和方法;反之,非静态的方法可以访问静态的属性和方法;

static 关键字:可以修饰方法(静态方法)或者成员变量(全局变量),不能用来修饰局部变量(只能用final修饰)
全局变量和成员变量的区别:
1.在内存中的保存位置不同:成员变量保存在堆中,全局变量保存在方法区;
2.保存份数不同:成员变量,每new出来一份都要分配空间,保存多份;全局变量只保存一份;
3.创建时间不同:成员变量,new的时候,才创建;全局变量,类加载时就创建;
4.访问方式不用: 成员变量,用对象名.属性,对象名.方法名();,可以使用this关键字;
全局变量,推荐 用类名.属性,类名.方法名();当然也可以
用对象名.属性,对象名.方法名(),可以使用this关键字;

(普通)代码块:单独在{}中写的代码;new的时候,才会被执行,不new不执行,new几次执行几次;
执行顺序在构造器之前

(static)代码块:static{} 类加载的时候就会被执行,不new也执行。只会执行1次。
 执行顺序:静态代码块>普通代码块>构造器>普通方法或静态方法;
静态的方法或者代码块,只能访问静态的成员变量,不能访问非静态的属性和方法;
反之,非静态的方法或者代码块可以访问的静态或非静态属性和方法;
 

java第五章:面向对象(oop)之 static关键字

标签:方式   tar   过程   构造器   全局变量   final   www   代码块   推荐   

原文地址:http://www.cnblogs.com/SXTzhaopengda/p/6944021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!