开发工具:eclipse
关键技术:javaSE
作者:林锦铅
撰写时间:20190417
定义静态 static
注意:主函数是固定格式的,作为程序的主入口,被JVM识别、调用
public static void main(String[] args) {}
静态修饰的内容有成员变量和函数
什么时候定义静态变量(类变量)?
- 当对象中出现共享数据时,该数据被静态所修饰
- 对象中的特有数据要定义成非静态存在于堆内存中
- 静态随着类的加载而加载。而且优先于对象
什么时候定义静态函数?---为代码严谨性
1,成员变量。(数据共享时静态化)
该成员变量的数据是否是所有对象都一样:
如果是,那么该变量需要被静态修饰,因为是共享的数据。
如果不是,那么就说这是对象的特有数据,要存储到对象中
2,成员函数。(方法中没有调用特有数据时就定义成静态)
当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态
public class Demo1 {
public static void main(String[] args) {
//【2】没有访问到对象数据,不需要声明对象,浪费内存
person.show();
}
}
class person{
//【3】对象数据
String name;
//【1】该函数内部没有访问到非静态数据(对象的特有数据),定义成静态
public static void show() {
System.out.println("张三")
}
}
【1】成员变量和静态变量的区别:
1,成员变量所属于对象。所以也称为实例变量。
静态变量所属于类。所以也称为类变量。
2,成员变量存在于堆内存中。
静态变量存在于方法区中。
3,成员变量随着对象创建而存在。随着对象被回收而消失。
静态变量随着类的加载而存在。随着类的消失而消失。
4,成员变量只能被对象所调用 。
静态变量可以被对象调用,也可以被类名调用。
所以,成员变量可以称为对象的特有数据,静态变量称为对象的共享数据。
【2】弊端
1,有些数据是对象特有的数据,是不可以被静态修饰的。因为那样的话,特有数据会变成对象的共享数据。
这样对事物的描述就出了问题。所以,在定义静态时,必须要明确,这个数据是否是被对象所共享的。
2,静态方法只能访问静态成员,不可以访问非静态成员。
因为静态方法加载时,优先于对象存在,所以没有办法访问对象中的成员。
3,静态方法中不能使用 this,super 关键字。
因为 this 代表对象,而静态在时,有可能没有对象,所以 this 无法使用。
4,主函数是静态的