class Person{
public static void sleep ( ) {
system.out.println(“弟弟”);
}
}
既然sleep方法没有访问到对象中的特有数据,都可以不需要对象就可以参加使用该方法,只需要在该方法上用static修饰即可
static:用于修饰成员的静态关键字
Class StaticDemo{
public static void main(String[ ] args)
{
Person.sleep( );
}
}
sleep方法属于Person.class,发现sleep并没有使用Person对象中的数据,所以Person对象的建立是没有意义的,所以我们不创建Person对象就想能调用,可以通过类名的方式来访问,注意:用类名直接调用的方法必须通过制定修饰符static来修饰。
2.什么时候需要静态修饰?
该函数没有访问过对象中的属性时。
3.静态可以把共性的数据抽取出来共享:
static String country="CN";
后面就可以直接 System.out.println(Person.country)
4.静态关键字 static 是什么? 成员修饰符
有什么特点?
a.被静态修饰的成员,可以直接被类名所调用。
b.静态成员优先于对象存在
c.静态成员会随着类加载而加载,随着类消失而消失,生命周期最长。
5.注意事项:
a.静态方法的访问局限性,静态无法访问静态。
b.静态方法中不能出现 this或super关键字(先静态后对象)
c.主函数是静态的
6.怎么用? 直接用于修饰成员。
什么时候用?
成员变量:该数据在所有对象中都一样时,直接静态修饰。
成员函数:如果函数没有访问过对象中的属性数据,那么该函数就是静态的。
7.成员变量和静态变量的区别:
a.名称不同:成员变量叫做实例变量,静态变量就做类变量/
b.内存存储:成员变量存储在堆内存的对象中,而静态变量存储在方法区的静态区中。
c.生命周期不同:成员变量随着对象出现而出现、消失而消失;而静态变量随着类的出现而出现,消失而消失。
8.静态代码块:随着类的加载,而且只执行一次。
class staticCode {
static //静态代码块
{
syso("A")
}}
作用:给类初始化
应用场景:类不需要创建对象,但需要初始化。
这是将部分代码存储到静态代码块中。
9.构造代码块:
class Person
{
private int age;
{//前面无static'修饰,为构造代码块,可以给所有创建的对象初始化。
System.....
}
}
10.创建一个对象的流程(day07)
a.加载制定的字节码文件进内存。
b.通过new在对内存中开辟空间,分配首地址值。
c.对对象中的属性进行默认初始化。
d.调用与之对性的构造函数,构造函数压栈。
e.构造函数中执行隐式的语句super()访问父类中的构造函数。
f.对属性进行显示初始化。
g.调用类中的构造代码块。
h.执行构造函数中自定义的初始化代码。
i.初始化完毕,将地址赋给指定的引用。
11.主函数中的局部代码块可以控制局部变量生命周期。
12.静态代码块:只执行一次。::::构造代码块:每次构造方法都执行
静态先执行与动态。