黑马程序员-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
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
相关文章推荐
- 黑马程序员——Java基础——面向对象-封装-static使用
- 黑马程序员——Java基础---面向对象(面向对象,类,对象,匿名对象,封装,构造函数,构造代码块,this,static,main,帮助文档,静态代码块,单例)
- 黑马程序员——Java基础---有关static(静态)的知识
- 黑马程序员_Java基础_this,super,static,final关键字
- 黑马程序员——java基础之构造函数、this、super、static
- 黑马程序员_Java基础[10]_主函数main、数组、static、静态代码块、帮助文档
- 黑马程序员---java基础---面向对象中的构造方法及static关键字,变量的问题
- 黑马程序员——Java基础:static关键字、单例设计模式
- 黑马程序员java基础关于Static知识点整合与拓展
- 黑马程序员--java基础--static 和 final 修饰符
- 黑马程序员——Java基础---static关键字
- 黑马程序员_Java基础[9]_static
- 黑马程序员_Java基础_面向对象(Static的使用、对象初始化和调用成员过程、单例设计模式)
- 黑马程序员——Java基础语法 之面向对象(概念,特征,this,static关键字,代码块)
- 黑马程序员——高新技术---Java基础语法—面向对象_构造方法,static 关键字
- 黑马程序员 Java基础 面向对象:static关键字 main函数 单例设计模式
- 黑马程序员——Java基础---面向对象(构造方法和static关键字)
- 黑马程序员-----java基础二十(java之反射技术)
- Java基础之面向对象(二)--static、静态代码块、Main函数、单例模式
- 黑马程序员--java基础:File类和文件字节IO流