@ayw
2016-05-05T10:10:33.000000Z
字数 1909
阅读 595
static
静态
关键字
静态:static,是一个修饰符,用于修饰成员(成员函数,成员变量)
当成员被静态修饰,就多了一个调用方式,除了可以被对象调用之外,还可以直接被类名调用,类名.静态成员(成员变量,成员方法)
static特点:
- 随着类的加载而加载,也就是,静态会随着类的消失而消失,说明他的生命周期最长
- 优先于对象存在,明确一点,静态是先存在的,对象是后存在的
- 被所有的对象共享
- 可以直接被类名所调用
class Person
{
String name;//成员变量,实例变量
static String country = "CN";//静态的成员变量,类变量
public void show()
{
System.out.println(name+"::")+country;
}
public static void main()
{
Person p = new Person();
Person p1 = new Person();
}
}
class Person()
{
int age;//实例变量随着对象的建立而存在于方法区中,生命周期短,随着对象的消失而消失。
static String name;//类变量,随着类的加载存在于方法区中,随着类的加载而加载,随着类的消失而消失,生命周期最长。
Person()
{
}
Person(int age,String name)
{
}
}
class Test()
{
public static void main(String[] args)
{
Person p1 = new Person(27,"Tom");
Person p2 = new Person(22,"Jack");
System.out.println(p1.name+"***"+p2.name); //输出的name都是Tom,static修饰的类的属性属于静态的成员变量,脱离了对象而独立的存在的,所以值Tom,用static修饰的成员变量或者成员方法可以使用:类名.成员 调用。
}
}
实例变量和类变量的区别:
- 存放位置:类变量随着类的加载而存在于方法区,实例变量随着对象的建立而存在于堆内存中
- 生命周期:类变量生命周期最长,随着类的消失而消失,实例变量生命周期随着对象的消失而消失
静态使用的注意事项:
静态的优缺点:
static什么时候使用:
静态函数什么时候定义:
主函数是静态的
主函数:是一个特殊的函数,作为程序的入口,可以被jvm调用,没有void返回值。
class MainDemo
{
public static void main(String[] args)//main:不是关键字,但是是一个特殊的单词,可以被jvm识别,(String[] args):函数的参数
{
}
public static void main(int x)//主函数也可以重载
{
System.out.println(args.length);
}
}
String[] args = new String[3];
String[] args = null;
jvm在调用主函数时,传入的是new String[0];
class Person()
{
int age;//实例变量随着对象的建立而存在于方法区中,生命周期短,随着对象的消失而消失。
static String name;//类变量,随着类的加载存在于方法区中,随着类的加载而加载,随着类的消失而消失,生命周期最长。
Person()
{
}
Person(int age,String name)
{
}
}
class Test()
{
public static void main(String[] args)
{
Person p1 = new Person(27,"Tom");
Person p2 = new Person(22,"Jack");
System.out.println(p1.name+"***"+p2.name); //输出的name都是Tom,static修饰的类的属性属于静态的成员变量,脱离了对象而独立的存在的,所以值Tom,用static修饰的成员变量或者成员方法可以使用:类名.成员 调用,一般的调用普通的类中的方法,先创建该类的对象,然后使用:对象名.方法,调用。
}
}