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

---------------------- 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

发布了32 篇原创文章 · 获赞 1 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章