您的位置:首页 > 职场人生

黑马程序员-java基础 static 和 单例

2012-05-24 20:53 260 查看
---------------------- android培训java培训 、期待与您交流! ----------------------

 

static关键字: 是一个修饰符,用于修饰成员变量和方法。表示此成员是静态成员。 static修饰的成员放在栈内

存中。访问静态成员,还可以直接用类名.静态成员名。

static特点:1随着类的加载而加载  2优先与对象存在 3被所有类共享 4可以直接用类名调用

静态成员变量和普通成员变量的区别:

1 存放位置  静态成员变量随着类的加载而存在于方法区中,普通成员变量随着对象的建立而存在于堆内存中

2 生命周期  静态成员变量生命周期最长,随着类的消失而消失。普通成员变量随着对象的消失而消失

当对象中出现共享数据时,应该把该数据定义为静态

static实用注意事项:1静态方法只能直接访问静态成员,不能直接访问非静态的成员 2 静态方法中不能定义this

super关键字

main方法(主方法):

public static void main(String[] args){}

public:代表该方法访问权限是最大的

static:代表main方法是静态的 随着类的加载就已存在。

void: main方法没有具体的返回值。

main: 不是关键字。但是是一个特殊的单词,可以被jvm识别

(String[] args): 方法的参数 参数类型是一个数组,参数的元素是一个字符串数组

静态代码块:随着类的加载而执行,只执行一次。用于给类初始化。优先于main方法

格式

public  MyClass{

 static{

  静态代码块的代码

 }



内存执行过程:

public Class Person{

 public static void main(String[] args){

  Person p = new Person()

 }



当执行erson p = new Person() 这句代码时 ,在内存中执行过程如下

1 因为new用到了Person.class,所以会先找到Person.class文件并加载到内存中

2 执行该类的static代码块,如果有的话,给Person.class类初始化

3 在堆内存中开辟空间,分配内存地址。

4 在堆内存中建立对象的特有属性,并默认初始化

5 对对象进行显示初始化

6 对对象进行构造代码块初始化

7 对对象进行构造函数初始化

8 讲内存地址付给栈内中中的P变量

设计模式 初步了解之单例模式

保证对象唯一

设计思想:1 为了避免其他程序过多建立该类对象。先静止其他程序建立该类对象。

          2 还为了其他程序可以访问到该类对象,只好在本类中自定义一个对象。

          3 为了方便其他程序对自定义对象的访问,可以对外提供一些访问方法。

代码体现:1 将构造函数初始化

          2 在类中建立一个本类对象

          3 提供一个方法可以获取到该对象

//单例类

public class Single {

 private int age;;

 private static Single s = new Single();

 private Single(){

  

 }

 public static Single getInstance(){

  return s;

 }

 public int getAge() {

  return age;

 }

 public void setAge(int age) {

  this.age = age;

 }

}

//main方法测试下

public class Test {

 public static void main(String[] args) {

  Single s = Single.getInstance();

  s.setAge(23);

  Single s1 = Single.getInstance();

  System.out.println(s.getAge());

  System.out.println(s1.getAge());

 }

}

输出结果  s.age=23

          s2.age=23

         当s.setAge(23)后,s1.getAge()得到的值也是23 ,说明他们访问的是一个对象

 

 

 

---------------------- android培训java培训 、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐