---------------------- 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培训 、期待与您交流! ----------------------